72 lines
1.8 KiB
C++
72 lines
1.8 KiB
C++
#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
|