Log4Qt的配置及使用方法

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()功能都能很好的重定向到配置的日志文件中的功能示例。

引用

  1. Log4Qt快速入门——Log4Qt日志输出重定向源码解析
  2. Log4Qt详细文档 MEONMedical/Log4Qt: Log4Qt - Logging for the Qt cross-platform application framework (github.com)