Log4Qt的使用
1. log4QT的选择
通过使用 Log4j,我们可以:
控制日志的输出格式;
通过定义日志信息的级别,来更加细致地控制日志的生成过程;
控制日志信息的输出位置,例如:文件、控制台、数据库等;
……
Log4Qt 简介
Log4Qt 是 Apache Log4j 的 Qt 移植版,主要用于记录日志。
由于 Log4Qt 是基于 Qt 编写的,所以它也继承了 Qt 的跨平台特性。也就是说,可以将其用于 Windows、Linux、以及 MacOS 平台上。
主页:请访问这里。
文档:请访问这里。
由于 Log4Qt 的开发在 2009 年就终止了,所以其官网提供的源码仅支持 Qt4:
for Qt4:点击这里下载。 https://sourceforge.net/projects/log4qt/
但值得庆祝的是,有人提供了一个兼容 Qt5 的版本:
for Qt5:点击这里下载。这里下载
这个升级版很棒,不但可以将 Log4Qt 源码添加至项目中,而且还可以将其编译为库,并且它还同时支持 CMake 和 qmake。
最重要的是,它还在持续升级,并且在老版本(for Qt4)的基础上添加了很多新 Feature。
2. 集成
仅需在 .pro(自己的工程文件)添加如下配置:
###################### 库 log4qt
# 定义所需的宏
DEFINES += LOG4QT_LIBRARY# 定义 Log4Qt 源码根目录
LOG4QT_ROOT_PATH = $$PWD/libs/Log4Qt-master# 指定编译项目时应该被搜索的 #include 目录
INCLUDEPATH += $$LOG4QT_ROOT_PATH/src \
$$LOG4QT_ROOT_PATH/src/log4qt \
$$LOG4QT_ROOT_PATH/include \
$$LOG4QT_ROOT_PATH/include/log4qt# 将 Log4Qt 源代码添加至项目中
include($$LOG4QT_ROOT_PATH/src/log4qt/log4qt.pri)
include($$LOG4QT_ROOT_PATH/build.pri)
include($$LOG4QT_ROOT_PATH/g++.pri)
3. 使用 添加QtLog4Qt.conf 文件
#设置储存log文件的根目录
logpath=/Users/zhai/git/logs/log4j.reset=true
log4j.Debug=WARN
log4j.threshold=NULL
#设置是否监听QDebug输出的字符串
log4j.handleQtMessages=true
#在运行中,是否监视此文件配置的变化
log4j.watchThisFile=false#设置根Logger的输出log等级为All
#设置Log输出的几种输出源(appender):console, daily, rolling
log4j.rootLogger=ALL, console, daily#设置终端打印记录器
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=STDOUT_TARGET
log4j.appender.console.layout=org.apache.log4j.TTCCLayout
log4j.appender.console.layout.dateFormat=dd.MM.yyyy hh:mm:ss.zzz
log4j.appender.console.layout.contextPrinting=true
log4j.appender.console.threshold=ALL#设置一个每日储存一个log文件的记录器
log4j.appender.daily=org.apache.log4j.DailyFileAppender
log4j.appender.daily.file=${logpath}/propertyconfigurator.log
log4j.appender.daily.appendFile=true
log4j.appender.daily.datePattern=_yyyy_MM_dd
log4j.appender.daily.keepDays=90
log4j.appender.daily.layout=${log4j.appender.console.layout}
log4j.appender.daily.layout.dateFormat=${log4j.appender.console.layout.dateFormat}
log4j.appender.daily.layout.contextPrinting=${log4j.appender.console.layout.contextPrinting}# 配置一个滚动文件记录器
log4j.appender.rolling=org.apache.log4j.RollingFileAppender
log4j.appender.rolling.file= ${logpath}/propertyconfigurator_rolling.log
log4j.appender.rolling.appendFile=true
log4j.appender.rolling.maxFileSize= 20MB
log4j.appender.rolling.maxBackupIndex= 10
log4j.appender.rolling.layout=${log4j.appender.console.layout}
log4j.appender.rolling.layout.dateFormat=${log4j.appender.console.layout.dateFormat}
log4j.appender.rolling.layout.contextPrinting=${log4j.appender.console.layout.contextPrinting}# 给“LoggerObjectPrio”这个类的Logger定义log输出等级为Error,
# 给“LoggerObjectPrio”这个类的Logger定义log输出源:daily, console
log4j.logger.LoggerObjectPrio=ERROR, rolling
#设置为false,表示“LoggerObjectPrio”这个类的logger不继承的rootLogger输出源(appender)
log4j.additivity.LoggerObjectPrio=false
4. main.cpp初始化
#include “log4qt/logger.h”
#include “log4qt/propertyconfigurator.h”
#include “log4qt/loggerrepository.h”
#include “log4qt/consoleappender.h”
#include “log4qt/ttcclayout.h”
#include “log4qt/logmanager.h”
#include “log4qt/fileappender.h”//初始化系统日志
Log4Qt::PropertyConfigurator::configure(“/Users/zhai/git/OtaMaster/QtLog4Qt.conf”);
Log4Qt::LogManager::setHandleQtMessages(true);