mirror of
https://github.com/f4exb/sdrangel.git
synced 2025-08-26 01:12:26 -04:00
Add memory buffer to Logger, so last 500 log messages can be included in crash report. Generate and include stripped pdb files so stack trace can include function names.
138 lines
3.1 KiB
C++
138 lines
3.1 KiB
C++
/*
|
|
* loggerwithfile.cpp
|
|
*
|
|
* Created on: Nov 11, 2017
|
|
* Author: f4exb
|
|
*/
|
|
|
|
#include "loggerwithfile.h"
|
|
|
|
using namespace qtwebapp;
|
|
|
|
LoggerWithFile::LoggerWithFile(QObject* parent)
|
|
:Logger(parent), fileLogger(0), useFileFlogger(false)
|
|
{
|
|
consoleLogger = new Logger(this);
|
|
bufferLogger = new BufferLogger(500, this);
|
|
}
|
|
|
|
LoggerWithFile::~LoggerWithFile()
|
|
{
|
|
destroyFileLogger();
|
|
delete consoleLogger;
|
|
delete bufferLogger;
|
|
}
|
|
|
|
void LoggerWithFile::createOrSetFileLogger(const FileLoggerSettings& settings, const int refreshInterval)
|
|
{
|
|
if (!fileLogger) {
|
|
fileLogger = new FileLogger(settings, refreshInterval, this);
|
|
} else {
|
|
fileLogger->setFileLoggerSettings(settings);
|
|
}
|
|
}
|
|
|
|
void LoggerWithFile::destroyFileLogger()
|
|
{
|
|
if (fileLogger)
|
|
{
|
|
delete fileLogger;
|
|
fileLogger = 0;
|
|
}
|
|
}
|
|
|
|
void LoggerWithFile::log(const QtMsgType type, const QString& message, const QString &file, const QString &function, const int line)
|
|
{
|
|
consoleLogger->log(type,message,file,function,line);
|
|
bufferLogger->log(type,message,file,function,line);
|
|
|
|
if (fileLogger && useFileFlogger) {
|
|
fileLogger->log(type,message,file,function,line);
|
|
}
|
|
}
|
|
|
|
void LoggerWithFile::logToFile(const QtMsgType type, const QString& message, const QString &file, const QString &function, const int line)
|
|
{
|
|
if (fileLogger && useFileFlogger) {
|
|
fileLogger->log(type,message,file,function,line);
|
|
}
|
|
}
|
|
|
|
void LoggerWithFile::clear(const bool buffer, const bool variables)
|
|
{
|
|
consoleLogger->clear(buffer,variables);
|
|
bufferLogger->clear(buffer,variables);
|
|
|
|
if (fileLogger && useFileFlogger) {
|
|
fileLogger->clear(buffer,variables);
|
|
}
|
|
}
|
|
|
|
void LoggerWithFile::setConsoleMinMessageLevel(const QtMsgType& msgLevel)
|
|
{
|
|
consoleLogger->setMinMessageLevel(msgLevel);
|
|
}
|
|
|
|
void LoggerWithFile::setFileMinMessageLevel(const QtMsgType& msgLevel)
|
|
{
|
|
if (fileLogger) {
|
|
fileLogger->setMinMessageLevel(msgLevel);
|
|
}
|
|
}
|
|
|
|
void LoggerWithFile::getConsoleMinMessageLevelStr(QString& levelStr)
|
|
{
|
|
switch (consoleLogger->getMinMessageLevel())
|
|
{
|
|
case QtDebugMsg:
|
|
levelStr = "debug";
|
|
break;
|
|
case QtInfoMsg:
|
|
levelStr = "info";
|
|
break;
|
|
case QtWarningMsg:
|
|
levelStr = "warning";
|
|
break;
|
|
case QtCriticalMsg:
|
|
case QtFatalMsg:
|
|
levelStr = "error";
|
|
break;
|
|
default:
|
|
levelStr = "debug";
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LoggerWithFile::getFileMinMessageLevelStr(QString& levelStr)
|
|
{
|
|
switch (fileLogger->getMinMessageLevel())
|
|
{
|
|
case QtDebugMsg:
|
|
levelStr = "debug";
|
|
break;
|
|
case QtInfoMsg:
|
|
levelStr = "info";
|
|
break;
|
|
case QtWarningMsg:
|
|
levelStr = "warning";
|
|
break;
|
|
case QtCriticalMsg:
|
|
case QtFatalMsg:
|
|
levelStr = "error";
|
|
break;
|
|
default:
|
|
levelStr = "debug";
|
|
break;
|
|
}
|
|
}
|
|
|
|
void LoggerWithFile::getLogFileName(QString& fileName)
|
|
{
|
|
fileName = fileLogger->getFileLoggerSettings().fileName;
|
|
}
|
|
|
|
QString LoggerWithFile::getBufferLog() const
|
|
{
|
|
return bufferLogger->getLog();
|
|
}
|