| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- #ifndef LOGOUTPUT_H
- #define LOGOUTPUT_H
- /**
- * @brief QDebug的日志输出重定向到文件
- * @author wjp
- * @date 2024.3.8 modify by wjp
- *
- * */
- #include <QObject>
- #include <QtMessageHandler>
- #include <QDebug>
- #include <QFile>
- #include <QMutex>
- #include <QMutexLocker>
- #define LOG_MAXSIZE 5 * 1024 * 1024 //单个log文件最大值
- class LogOutput : public QObject
- {
- Q_OBJECT
- public:
- static LogOutput * getInstance();
- void install(); //安装信息处理函数
- void uninstall(); //卸载信息处理函数
- void deleteLog(); //删除过期日志
- protected:
- // 此函数用于注册
- static void customMessageHandler(QtMsgType type, const QMessageLogContext &context, const QString &msg);
- private:
- //将构造函数,拷贝构造,赋值运算符都定义为私有,不允许外部类操作
- explicit LogOutput(QObject *parent = nullptr); //构造函数
- ~LogOutput(); //析构
- LogOutput(const LogOutput &sig) = delete; //拷贝构造函数
- LogOutput& operator=(const LogOutput &sig) = delete ; //赋值运算符重载
- private:
- static LogOutput *ins; //私有静态对象
- static QMutex m_mutex;
- QString logPath;
- QFile m_curLogFile;
- QString m_curLogFileDate;// 当前日志所属日期,防止在午夜24点刚刚过,需要更换日志输出文件
- //信息处理函数(重写的myMessageHandler)
- /*功能说明:通过调试信息保存到日志文件
- *
- *参数说明:
- * msgType: 调试信息类型或级别(qdebug, qwarning, qfatal 。。。。)
- * context: 调试信息所处文本,可使用context.file和context.line获取文本所处行数及所处文件路径,以及使用context.function获取文本所处函数名
- * msg: 调试信息内容,自定义
- */
- void outPutMsg(QtMsgType msgType, const QMessageLogContext &context, const QString &msg);
- /*
- * 函数功能:
- * 1、根据调试信息以及日期,保存到相应的文件。
- * 2、在保存文件前需要判断文件大小是否大于自定义值,如果大于,便按照序号从小到大新建一个。
- */
- void saveLog(QString message);
- // 打开日志文件
- void openTheLogFile();
- };
- #endif // LOGOUTPUT_H
|