PowerMaster/include/logger.h

72 lines
1.8 KiB
C
Raw Normal View History

2025-12-03 17:09:26 +08:00
#ifndef LOGGER_H
#define LOGGER_H
#include <QObject>
#include <QFile>
#include <QDateTime>
// 日志宏定义
#define LOG(level, module, message) Logger::instance().log(Logger::level, module, message)
#define LOG_DEBUG(module, message) LOG(DEBUG, module, message)
#define LOG_INFO(module, message) LOG(INFO, module, message)
#define LOG_WARN(module, message) LOG(WARNING, module, message)
#define LOG_ERROR(module, message) LOG(ERROR, module, message)
#define LOG_FATAL(module, message) LOG(FATAL, module, message)
class QSettings;
class Logger : public QObject
{
Q_OBJECT
public:
enum LogLevel
{
FATAL = 0,
ERROR,
WARNING,
INFO,
DEBUG
};
//获取单例实例
static Logger& instance();
void log(LogLevel, const QString&, const QString&);
private:
explicit Logger();
~Logger();
//禁止拷贝
Logger(const Logger&) = delete; //delete关键字表示该函数不可用包括编译器自动生成的函数
Logger& operator=(const Logger&) = delete;
void initialize();
void loadConfig(/*const QString&*/); //本系统是通过Settings类进行配置文件信息读取
void setLogFile(const QString&);
void shutdown();
void writeToFile(const QString&);
void rollLogFiles(); //当文件大小超过设置上线时会触发'滚动'
QString formatLogMessage(LogLevel, const QString&, const QString&);
struct LogEntry
{
QDateTime time;
LogLevel level;
QString module;
QString message;
Qt::HANDLE threadId;
};
//配置参数
QSettings* m_settings;
LogLevel m_logLevel;
QString m_logFilePath;
QFile m_logFile;
qint64 m_maxFileSize;
int m_maxBackupFiles;
bool m_outputToConsole;
bool m_outputOtFile;
};
#endif //LOGGER_H