- 22
- 0
- 约7.06千字
- 约 15页
- 2017-04-04 发布于重庆
- 举报
Log4QT的使用笔记
目 录
Log4Qt简介 2
Log4j配置文件 5
配置根Logger 5
配置Appender 6
配置layout 6
如何使用第三方库? 7
题外 7
工程结构示例 8
使用Log4Qt 9
libLog4Qt.pri 9
10
Logger 11
环境变量 12
初始化 13
还有点什么? 14
实现细节 14
/dbzhang800/article/details/6916948
Log4Qt简介
Log4Qt 是Apache Log4J 的Qt移植版,所以看Log4J的资料应该是最直接有效的因为Log4Qt的直接资料太少了。
Log4Qt主要是用来记录日志(有助于程序调试)。有3个主要的组件:
Logger
提供日志记录服务,可以有多个Logger存在,每个有它们自己的名字。Logger间存在隶属关系,有一个Logger称为根Logger。
Appender
用来指明将日志记录到什么地方:比如,控制台、文件、数据库,等等
Layout
控制日志的输出格式,可以类比一下C中的printf。
例子一
一个简单的使用Log4Qt的Qt程序:(使用基础配置和根logger)
#include QtCore #include logger.h
#include basicconfigurator.h
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
Log4Qt::BasicConfigurator::configure();
Log4Qt::Logger * log = Log4Qt::Logger::rootLogger();
log-debug(Hello DbZhang800!);
log-info(Hello Qt!);
log-warn(Hello 1+1=2);
return 0;
}
结果如下:
16 [0x00a56708] DEBUG root - Hello DbZhang800! 16 [0x00a56708] INFO root - Hello Qt!
16 [0x00a56708] WARN root - Hello 1+1=2
例子二
稍微扩充一点,使用自己定义的logger结果:
0 [0x00a56708] INFO Object - Constructor 0 [0x00a56708] INFO Object - Destructor
在类Object中,我们可以使用名为Object的Logger。恩,直接指定类名是可以的。可是我们现在在Qt下啊。Qt的元对象系统中包含类的名字,故尔我们可以直接使用。
例子三
用使用元对象系统,那么必须使用Q_OBJECT宏,然后我们从元对象系统获取类的名字,然后创建一个相应的logger就行了。
不过Log4Qt,既然是为Qt准备的,那么就要为Qt程序解忧嘛,也就是宏
LOG4QT_DECLARE_QCLASS_LOGGER
这个宏展开后成为该类的一个成员函数,返回一个Logger,我们就可以直接使用了:程序的输出结果如下:
2011-10-29 13:52:06 [Object]-[INFO] constructor 2011-10-29 13:52:06 [Object]-[INFO] destructor
注意,本例中,我们没有使用默认配置,而是使用了一个配置文件log4qt.conf,放在了可执行程序所在目录下面
log4j.rootLogger=DEBUG,A1 log4j.appender.A1=org.apache.log4j.ConsoleAppender log4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n
额,没错,里面的这些东西确实都是以log4j打头的,所以需要看log4j的手册来搞清楚这些东西:
配置rootLogger,高于DEBUG的日志被输出,定义一个appender,取名为A1
配置A1,输出到控制台
设置A1采用的layout,并设置其具体格式
Log4j配置文件
我是不是太了解,简单整理一下:
配置根Logger
其语法
log4j.rootLogger = [level], appenderName1, appenderName2, ...
其中:
level 控制日志输出的级别:
OFF 关闭所有日志输出 FATAL ? ERROR 建议使用的几个级别?,高于指定级别
原创力文档

文档评论(0)