mirror of
https://github.com/f4exb/sdrangel.git
synced 2025-03-21 19:58:39 -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
|
||||
* SSB demod: fixed low cutoff channel marker display
|
||||
* 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
|
||||
|
||||
|
@ -19,6 +19,18 @@ using namespace qtwebapp;
|
||||
void FileLogger::refreshSettings()
|
||||
{
|
||||
mutex.lock();
|
||||
|
||||
if (useQtSettings) {
|
||||
refreshQtSettings();
|
||||
} else {
|
||||
refreshFileLogSettings();
|
||||
}
|
||||
|
||||
mutex.unlock();
|
||||
}
|
||||
|
||||
void FileLogger::refreshQtSettings()
|
||||
{
|
||||
// Save old file name for later comparision with new settings
|
||||
QString oldFileName=fileName;
|
||||
|
||||
@ -49,12 +61,41 @@ void FileLogger::refreshSettings()
|
||||
close();
|
||||
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)
|
||||
: Logger(parent)
|
||||
: Logger(parent), useQtSettings(true)
|
||||
{
|
||||
Q_ASSERT(settings!=0);
|
||||
Q_ASSERT(refreshInterval>=0);
|
||||
@ -68,6 +109,20 @@ FileLogger::FileLogger(QSettings* settings, const int refreshInterval, QObject*
|
||||
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()
|
||||
{
|
||||
|
@ -13,6 +13,7 @@
|
||||
#include <QBasicTimer>
|
||||
#include "logglobal.h"
|
||||
#include "logger.h"
|
||||
#include "fileloggersettings.h"
|
||||
|
||||
namespace qtwebapp {
|
||||
|
||||
@ -64,6 +65,14 @@ public:
|
||||
*/
|
||||
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.
|
||||
*/
|
||||
@ -96,6 +105,9 @@ private:
|
||||
/** Pointer to the configuration settings */
|
||||
QSettings* settings;
|
||||
|
||||
/** Pointer to the configuration settings */
|
||||
FileLoggerSettings fileLoggerSettings;
|
||||
|
||||
/** Output file, or 0=disabled */
|
||||
QFile* file;
|
||||
|
||||
@ -105,6 +117,9 @@ private:
|
||||
/** Timer for flushing the file I/O buffer */
|
||||
QBasicTimer flushTimer;
|
||||
|
||||
/** Use of Qt settings or simple structure settings */
|
||||
bool useQtSettings;
|
||||
|
||||
/** Open the output file */
|
||||
void open();
|
||||
|
||||
@ -120,6 +135,16 @@ private:
|
||||
*/
|
||||
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
|
||||
|
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