Files
amnezia-client/service/server/logger.h
T

84 lines
2.0 KiB
C++
Raw Normal View History

#ifndef LOGGER_H
#define LOGGER_H
2020-12-26 15:03:51 +03:00
#include <QDebug>
#include <QFile>
#include <QString>
#include <QTextStream>
2023-07-15 14:19:48 -07:00
#include "mozilla/shared/loglevel.h"
class Logger
2020-12-26 15:03:51 +03:00
{
public:
2022-01-30 17:35:57 +03:00
static bool init();
static void deinit();
2020-12-26 15:03:51 +03:00
static QString serviceLogFileNamePath();
2022-01-30 17:35:57 +03:00
static void clearLogs();
static void cleanUp();
2023-07-15 14:19:48 -07:00
// compat with Mozilla logger
Logger(const QString &className) { m_className = className; }
const QString& className() const { return m_className; }
class Log {
public:
Log(Logger* logger, LogLevel level);
~Log();
Log& operator<<(uint64_t t);
Log& operator<<(const char* t);
Log& operator<<(const QString& t);
Log& operator<<(const QStringList& t);
Log& operator<<(const QByteArray& t);
Log& operator<<(const QJsonObject& t);
Log& operator<<(QTextStreamFunction t);
Log& operator<<(const void* t);
// Q_ENUM
template <typename T>
typename std::enable_if<QtPrivate::IsQEnumHelper<T>::Value, Log&>::type
operator<<(T t) {
const QMetaObject* meta = qt_getEnumMetaObject(t);
const char* name = qt_getEnumName(t);
addMetaEnum(typename QFlags<T>::Int(t), meta, name);
return *this;
}
private:
void addMetaEnum(quint64 value, const QMetaObject* meta, const char* name);
Logger* m_logger;
LogLevel m_logLevel;
struct Data {
Data() : m_ts(&m_buffer, QIODevice::WriteOnly) {}
QString m_buffer;
QTextStream m_ts;
};
Data* m_data;
};
Log error();
Log warning();
Log info();
Log debug();
QString sensitive(const QString& input);
2020-12-26 15:03:51 +03:00
private:
friend void debugMessageHandler(QtMsgType type, const QMessageLogContext& context, const QString& msg);
static QFile m_file;
static QString m_logFileName;
static QTextStream m_textStream;
2023-07-15 14:19:48 -07:00
// compat with Mozilla logger
QString m_className;
2020-12-26 15:03:51 +03:00
};
#endif // LOGGER_H