#ifndef LOGOUTPUT_H #define LOGOUTPUT_H /** * @brief QDebug的日志输出重定向到文件 * @author wjp * @date 2024.3.8 modify by wjp * * */ #include #include #include #include #include #include #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