forked from quickshell/quickshell
core/log: add filesystem logger
This commit is contained in:
parent
46f48f2f87
commit
6bf4826ae7
9 changed files with 299 additions and 53 deletions
60
src/core/filelogger.cpp
Normal file
60
src/core/filelogger.cpp
Normal file
|
@ -0,0 +1,60 @@
|
|||
#include "filelogger.hpp"
|
||||
|
||||
#include <qlogging.h>
|
||||
#include <qloggingcategory.h>
|
||||
#include <qnamespace.h>
|
||||
#include <qobject.h>
|
||||
#include <qobjectdefs.h>
|
||||
#include <qtextstream.h>
|
||||
|
||||
#include "filelogger_p.hpp"
|
||||
#include "logging.hpp"
|
||||
#include "paths.hpp"
|
||||
|
||||
Q_LOGGING_CATEGORY(logLogger, "quickshell.logger", QtWarningMsg);
|
||||
|
||||
void FileLoggerThread::init() {
|
||||
auto* thread = new FileLoggerThread();
|
||||
auto* logger = new FileLogger();
|
||||
logger->moveToThread(thread);
|
||||
thread->start();
|
||||
QMetaObject::invokeMethod(logger, "init", Qt::BlockingQueuedConnection);
|
||||
}
|
||||
|
||||
void FileLogger::init() {
|
||||
qCDebug(logLogger) << "Initializing filesystem logger...";
|
||||
auto* runDir = QsPaths::instance()->instanceRunDir();
|
||||
|
||||
if (!runDir) {
|
||||
qCCritical(logLogger
|
||||
) << "Could not start filesystem logger as the runtime directory could not be created.";
|
||||
return;
|
||||
}
|
||||
|
||||
auto path = runDir->filePath("log.log");
|
||||
auto* file = new QFile(path);
|
||||
|
||||
if (!file->open(QFile::WriteOnly | QFile::Truncate)) {
|
||||
qCCritical(logLogger
|
||||
) << "Could not start filesystem logger as the log file could not be created:"
|
||||
<< path;
|
||||
return;
|
||||
}
|
||||
|
||||
this->fileStream.setDevice(file);
|
||||
|
||||
QObject::connect(
|
||||
LogManager::instance(),
|
||||
&LogManager::logMessage,
|
||||
this,
|
||||
&FileLogger::onMessage,
|
||||
Qt::QueuedConnection
|
||||
);
|
||||
|
||||
qDebug(logLogger) << "Initialized filesystem logger";
|
||||
}
|
||||
|
||||
void FileLogger::onMessage(const LogMessage& msg) {
|
||||
LogManager::formatMessage(this->fileStream, msg, false);
|
||||
this->fileStream << Qt::endl;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue