1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2026-06-17 13:19:25 -04:00

Logging: alternate file logger constructor with settings as a simple structure

This commit is contained in:
f4exb
2017-11-11 22:27:02 +01:00
parent 82083c353e
commit 2e8268d040
4 changed files with 125 additions and 2 deletions
+57 -2
View File
@@ -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()
{