mirror of
https://github.com/f4exb/sdrangel.git
synced 2024-09-27 15:26:33 -04:00
Logging: alternate file logger constructor with settings as a simple structure
This commit is contained in:
parent
82083c353e
commit
2e8268d040
1
debian/changelog
vendored
1
debian/changelog
vendored
@ -3,6 +3,7 @@ sdrangel (3.8.3-1) unstable; urgency=medium
|
|||||||
* ChannelAnalyzerNG: fixed GUI displays when channel sample rate changes
|
* ChannelAnalyzerNG: fixed GUI displays when channel sample rate changes
|
||||||
* SSB demod: fixed low cutoff channel marker display
|
* SSB demod: fixed low cutoff channel marker display
|
||||||
* LimeSDR: increased start/stop stream wait time to 50ms
|
* LimeSDR: increased start/stop stream wait time to 50ms
|
||||||
|
* New logging system with optional copy to files
|
||||||
|
|
||||||
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 12 Nov 2017 18:14:18 +0100
|
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 12 Nov 2017 18:14:18 +0100
|
||||||
|
|
||||||
|
@ -19,6 +19,18 @@ using namespace qtwebapp;
|
|||||||
void FileLogger::refreshSettings()
|
void FileLogger::refreshSettings()
|
||||||
{
|
{
|
||||||
mutex.lock();
|
mutex.lock();
|
||||||
|
|
||||||
|
if (useQtSettings) {
|
||||||
|
refreshQtSettings();
|
||||||
|
} else {
|
||||||
|
refreshFileLogSettings();
|
||||||
|
}
|
||||||
|
|
||||||
|
mutex.unlock();
|
||||||
|
}
|
||||||
|
|
||||||
|
void FileLogger::refreshQtSettings()
|
||||||
|
{
|
||||||
// Save old file name for later comparision with new settings
|
// Save old file name for later comparision with new settings
|
||||||
QString oldFileName=fileName;
|
QString oldFileName=fileName;
|
||||||
|
|
||||||
@ -49,12 +61,41 @@ void FileLogger::refreshSettings()
|
|||||||
close();
|
close();
|
||||||
open();
|
open();
|
||||||
}
|
}
|
||||||
mutex.unlock();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void FileLogger::refreshFileLogSettings()
|
||||||
|
{
|
||||||
|
// Save old file name for later comparision with new settings
|
||||||
|
QString oldFileName = fileLoggerSettings.fileName;
|
||||||
|
|
||||||
|
// Load new config settings
|
||||||
|
|
||||||
|
fileName = fileLoggerSettings.fileName;
|
||||||
|
|
||||||
|
// Convert relative fileName to absolute, based on the current working directory
|
||||||
|
if (QDir::isRelativePath(fileName))
|
||||||
|
{
|
||||||
|
fileName = QFileInfo(QDir::currentPath(), fileName).absoluteFilePath();
|
||||||
|
}
|
||||||
|
|
||||||
|
maxSize = fileLoggerSettings.maxSize;
|
||||||
|
maxBackups = fileLoggerSettings.maxBackups;
|
||||||
|
msgFormat = fileLoggerSettings.msgFormat;
|
||||||
|
timestampFormat = fileLoggerSettings.timestampFormat;
|
||||||
|
minLevel = fileLoggerSettings.minLevel;
|
||||||
|
bufferSize = fileLoggerSettings.bufferSize;
|
||||||
|
|
||||||
|
// Create new file if the filename has been changed
|
||||||
|
if (oldFileName != fileName)
|
||||||
|
{
|
||||||
|
fprintf(stderr,"Logging to %s\n",qPrintable(fileName));
|
||||||
|
close();
|
||||||
|
open();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
FileLogger::FileLogger(QSettings* settings, const int refreshInterval, QObject* parent)
|
FileLogger::FileLogger(QSettings* settings, const int refreshInterval, QObject* parent)
|
||||||
: Logger(parent)
|
: Logger(parent), useQtSettings(true)
|
||||||
{
|
{
|
||||||
Q_ASSERT(settings!=0);
|
Q_ASSERT(settings!=0);
|
||||||
Q_ASSERT(refreshInterval>=0);
|
Q_ASSERT(refreshInterval>=0);
|
||||||
@ -68,6 +109,20 @@ FileLogger::FileLogger(QSettings* settings, const int refreshInterval, QObject*
|
|||||||
refreshSettings();
|
refreshSettings();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FileLogger::FileLogger(const FileLoggerSettings& settings, const int refreshInterval, QObject* parent)
|
||||||
|
: Logger(parent), useQtSettings(false)
|
||||||
|
{
|
||||||
|
Q_ASSERT(refreshInterval>=0);
|
||||||
|
fileLoggerSettings = settings;
|
||||||
|
file=0;
|
||||||
|
if (refreshInterval>0)
|
||||||
|
{
|
||||||
|
refreshTimer.start(refreshInterval,this);
|
||||||
|
}
|
||||||
|
flushTimer.start(1000,this);
|
||||||
|
refreshSettings();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
FileLogger::~FileLogger()
|
FileLogger::~FileLogger()
|
||||||
{
|
{
|
||||||
|
@ -13,6 +13,7 @@
|
|||||||
#include <QBasicTimer>
|
#include <QBasicTimer>
|
||||||
#include "logglobal.h"
|
#include "logglobal.h"
|
||||||
#include "logger.h"
|
#include "logger.h"
|
||||||
|
#include "fileloggersettings.h"
|
||||||
|
|
||||||
namespace qtwebapp {
|
namespace qtwebapp {
|
||||||
|
|
||||||
@ -64,6 +65,14 @@ public:
|
|||||||
*/
|
*/
|
||||||
FileLogger(QSettings* settings, const int refreshInterval=10000, QObject* parent = 0);
|
FileLogger(QSettings* settings, const int refreshInterval=10000, QObject* parent = 0);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Constructor.
|
||||||
|
@param settings Configuration settings as a simple structure (see: FileLoggerSettings).
|
||||||
|
@param refreshInterval Interval of checking for changed config settings in msec, or 0=disabled
|
||||||
|
@param parent Parent object
|
||||||
|
*/
|
||||||
|
FileLogger(const FileLoggerSettings& settings, const int refreshInterval=10000, QObject* parent = 0);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Destructor. Closes the file.
|
Destructor. Closes the file.
|
||||||
*/
|
*/
|
||||||
@ -96,6 +105,9 @@ private:
|
|||||||
/** Pointer to the configuration settings */
|
/** Pointer to the configuration settings */
|
||||||
QSettings* settings;
|
QSettings* settings;
|
||||||
|
|
||||||
|
/** Pointer to the configuration settings */
|
||||||
|
FileLoggerSettings fileLoggerSettings;
|
||||||
|
|
||||||
/** Output file, or 0=disabled */
|
/** Output file, or 0=disabled */
|
||||||
QFile* file;
|
QFile* file;
|
||||||
|
|
||||||
@ -105,6 +117,9 @@ private:
|
|||||||
/** Timer for flushing the file I/O buffer */
|
/** Timer for flushing the file I/O buffer */
|
||||||
QBasicTimer flushTimer;
|
QBasicTimer flushTimer;
|
||||||
|
|
||||||
|
/** Use of Qt settings or simple structure settings */
|
||||||
|
bool useQtSettings;
|
||||||
|
|
||||||
/** Open the output file */
|
/** Open the output file */
|
||||||
void open();
|
void open();
|
||||||
|
|
||||||
@ -120,6 +135,16 @@ private:
|
|||||||
*/
|
*/
|
||||||
void refreshSettings();
|
void refreshSettings();
|
||||||
|
|
||||||
|
/**
|
||||||
|
Refreshes the configuration settings with Qt settings.
|
||||||
|
*/
|
||||||
|
void refreshQtSettings();
|
||||||
|
|
||||||
|
/**
|
||||||
|
Refreshes the configuration settings with file log settings structure.
|
||||||
|
*/
|
||||||
|
void refreshFileLogSettings();
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // end of namespace
|
} // end of namespace
|
||||||
|
42
logging/fileloggersettings.h
Normal file
42
logging/fileloggersettings.h
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
/*
|
||||||
|
* fileloggersettings.h
|
||||||
|
*
|
||||||
|
* Created on: Nov 11, 2017
|
||||||
|
* Author: f4exb
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef LOGGING_FILELOGGERSETTINGS_H_
|
||||||
|
#define LOGGING_FILELOGGERSETTINGS_H_
|
||||||
|
|
||||||
|
#include <QtGlobal>
|
||||||
|
|
||||||
|
namespace qtwebapp {
|
||||||
|
|
||||||
|
struct FileLoggerSettings
|
||||||
|
{
|
||||||
|
QString fileName;
|
||||||
|
long maxSize;
|
||||||
|
int maxBackups;
|
||||||
|
QString msgFormat;
|
||||||
|
QString timestampFormat;
|
||||||
|
QtMsgType minLevel;
|
||||||
|
int bufferSize;
|
||||||
|
|
||||||
|
FileLoggerSettings() {
|
||||||
|
resetToDefaults();
|
||||||
|
}
|
||||||
|
|
||||||
|
void resetToDefaults() {
|
||||||
|
fileName = "logging.log";
|
||||||
|
maxSize = 1000000;
|
||||||
|
maxBackups = 2;
|
||||||
|
msgFormat = "{timestamp} {type} {msg}";
|
||||||
|
timestampFormat = "dd.MM.yyyy hh:mm:ss.zzz";
|
||||||
|
minLevel = QtDebugMsg;
|
||||||
|
bufferSize = 100;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // end of namespace
|
||||||
|
|
||||||
|
#endif /* LOGGING_FILELOGGERSETTINGS_H_ */
|
Loading…
Reference in New Issue
Block a user