Qt下的Log记录库 log4qt

本文介绍了在Qt开发中如何替换自定义的日志系统,采用log4qt库进行日志记录。log4qt规模适中,易于集成,尽管在编译和配置初期遇到一些问题,如QFile在某些环境下导致程序崩溃,但最终成功实现将日志输出到文件和控制台。通过LOG4QT_DECLARE_QCLASS_LOGGER宏,可以方便地在Qt类中添加日志记录功能。
摘要由CSDN通过智能技术生成
但凡稍许有些规模的软件系统,都需要一个事件记录系统,将各类调试或者错误信息输出到文件或者控制台上,特别是软件发布后,很多情况下开发人员只需要凭借事件记录就可以诊断软件故障所发生的位置。

我目前使用Qt所开发的一款系统也不例外,不过一开始我使用了一个自己写的Log记录用的全局类,直接将各类要记录的信息写入到文本文件中,简单归简单不过也足够使用了,因此我也从没想过要真正将它完善。直到最近忽然兴起,决心用一套真正完善的Log记录库赖替换掉它,最先想到的自然是log4cpp这个C++下最常用的Log库,但是下载来代码,尝试编译时却发现这套代码竟然没有供VS2005编译使用的Project文件,当然可以自己建立工程,但是看到那成堆的代码文件我就退缩了,另外一个更严重的问题是我原来自己实现的Log记录类至少能使用QObject的Meta信息来记录出事件所属的类的类名,而log4cpp这样的通用类库是不可能支持这样的功能的(除非自己写新的类进去)。这样看来log4cpp不是很适合我了。于是鬼使神差之中我在Google中搜索了log4qt这个名字,没想到竟然被我找到了:
http://sourceforge.net/projects/log4qt/

这个库的规模适中,大约4、5十个文件的样子,直接将它们加入我的工程,我就开始log4qt之旅了:花了10分钟将所有文件加入工程,编译,竟然出错,似乎是vs2005的编译审核严格了一些而已,修改之,再编译,这次Link出错,哦,是我忘了加moc,大约又花了15分钟逐个文件加上moc,ok,编译通过,运行,程序竟然崩溃,没办法只好跟进代码寻找原因,花了N久,结果发现是在QFile打开stderr和stdout时Qt内部发生的错误,Google了一下,无果,暂时屏蔽了这些代码,OK,程序运行起来了,不过我屏蔽的代码是这个log类初始化时默认将事件记录到控制台的代码,因此增加了一些设置代码,将log输出定位到文本文件中,好了,log总算能正常出现了。

log4qt的帮助文档很详细,可惜就是缺少一个傻瓜教程教我怎样以最简单的方法记录log,仔细的浏览了一遍帮助后,我才找到了对Qt程序最简单有效的log输出方法,那就是在自己的类中的QT_OBJECT宏指令之后,增加一条LOG4QT_DECLARE_QCLASS_LOGGER的指令,像这样,够简单吧:
#include  " log4qt/logger.h "

class  QMyClass:  public  QObject
{
    Q_OBJECT
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值