Logger: Move to shared/

This commit is contained in:
2022-02-27 23:10:46 +01:00
父節點 bb8906ace4
當前提交 7066cc1a45
共有 2 個文件被更改,包括 0 次插入0 次删除

37
shared/logger.cpp Normal file
查看文件

@ -0,0 +1,37 @@
#include <QMutexLocker>
#include "logger.h"
Logger::Logger(QFile *file)
{
out = new QDebug(file);
out->noquote();
this->file = file;
}
Logger::Logger(Logger &&o)
{
this->out = o.out;
o.out = nullptr;
}
Logger &Logger::error()
{
static Logger result = []
{
QFile *file = new QFile();
file->open(stderr, QIODevice::WriteOnly);
return Logger(file);
}();
return result;
}
Logger &Logger::info()
{
static Logger result = []
{
QFile *file = new QFile();
file->open(stdout, QIODevice::WriteOnly);
return Logger(file);
}();
return result;
}

45
shared/logger.h Normal file
查看文件

@ -0,0 +1,45 @@
#ifndef LOGGER_H
#define LOGGER_H
#include <QFile>
#include <QDebug>
#include <QMutex>
class Logger
{
private:
QDebug *out;
QMutex mutex;
QFile *file;
public:
Logger(QFile *file);
Logger(Logger &&o);
template <class T> Logger &operator<<(const T &val)
{
QMutexLocker locker(&this->mutex);
*out << val;
// TODO: QDebug may not have flushed yet
file->flush();
return *this;
}
template <class T> Logger &operator<<(const T *val)
{
QMutexLocker locker(&this->mutex);
*out << val;
// TODO: QDebug may not have flushed yet
file->flush();
return *this;
}
~Logger()
{
delete out;
}
static Logger &error();
static Logger &info();
};
#endif // LOGGER_H