1. 下载Log4Qt项目源码
下载长期支持版本的Log4Qt项目源码
1
| git clone git@github.com:MEONMedical/Log4Qt.git
|
2. 添加子项目并构建项目
将项目源码拷贝至项目跟路径,修改项目pro文件,追加:QT += concurrent,启用Log4Qt的多线程支持。然后将Log4Qt项目作为当前项目的子项目配置为:
1 2 3 4 5 6 7 8 9 10 11 12 13
| # 定义 Log4Qt 源码根目录 LOG4QT_PATH = $$PWD/Log4Qt # 定义所需的宏 DEFINES += LOG4QT_LIBRARY # 指定编译项目时应该被搜索的 #include 目录 INCLUDEPATH += $$LOG4QT_PATH/src \ $$LOG4QT_PATH/src/log4qt \ $$LOG4QT_PATH/include \ $$LOG4QT_PATH/include/log4qt # 将 Log4Qt 源代码添加至项目中 include($$LOG4QT_PATH/src/log4qt/log4qt.pri) include($$LOG4QT_PATH/build.pri) include($$LOG4QT_PATH/g++.pri)
|
执行qmake,完成后项目结构如下:
至此项目配置工作完成。
3. Log4Qt配置
本节目的为将Log4Qt配置为
- 满足项目对日志功能的使用需求:在指定路径生成日志文件*.log
- 可配置日志文件的最大大小
- 日志文件个数可配置,超出后重新开始记录;例如配置最多10个,则文件增长到三个之后,若要增加第四个,则第四个会覆盖原有第一个文件,原有第一个编号置为第二个,以此类推,最后一个会被删除。达到日志文件的滚动备份。
配置ConsoleAppender,将日志输出至控制台,方便调试
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| // Create a console appender Log4Qt::ConsoleAppender *consoleAppender = new Log4Qt::ConsoleAppender(layout, Log4Qt::ConsoleAppender::STDOUT_TARGET); consoleAppender->setName(QStringLiteral("My Appender")); consoleAppender->activateOptions(); // Add appender on root logger logger->addAppender(consoleAppender);
Log4Qt::RollingFileAppender *appender = new Log4Qt::RollingFileAppender; // 设置输出目的地为应用程序所在目录下的logFile.log appender->setFile("A.log"); // 设置日志为追加方式写入输出文件 appender->setAppendFile(true); // 设置备份文件的最大数量为10个 appender->setMaxBackupIndex(2); // 设置输出文件的最大值为1KB appender->setMaxFileSize("1KB"); appender->setLayout(layout); // 设置编码 appender->setEncoding(QTextCodec::codecForName("UTF-8"));
appender->setImmediateFlush(true); // 设置阈值级别为INFO appender->setThreshold(Log4Qt::Level::ALL_INT); // 激活选项 appender->activateOptions(); logger->addAppender(appender);
|
项目运行后,可以观察到项目的Shadow Build路径中,三个日志文件在大小、时间与内容的来回变化。
完整内容见:https://gitee.com/lison/sample_log4qt
###4. 关于Sample_log4qt
项目以调用封装后的系统的ping功能为例,演示在配置了log4qt日志功能后,使用Log4Qt的日志输出功能与使用系统本身的qDebug()功能都能很好的重定向到配置的日志文件中的功能示例。
引用
- Log4Qt快速入门——Log4Qt日志输出重定向源码解析
- Log4Qt详细文档 MEONMedical/Log4Qt: Log4Qt - Logging for the Qt cross-platform application framework (github.com)