C++日志库笔记

来源:互联网 发布:php位运算 编辑:程序博客网 时间:2024/06/06 09:13

前言

不像Java,C++目前并没有一个在使用份额上占绝对优势的日志库。如果针对某种病有很多种药,那就说明每一种药都不能完美的治疗这种病。 现在C++的日志库也是这个问题。这个帖子是作为一个总结帖,记录我所用过的日志库,并做个简单的比较。

log4qt

官网:log4qt.sourceforge.net (不知道是不是sourceforge的问题,直接访问该链接无法打开网页,可用链接在此:http://sourceforge.net/projects/log4qt/)
1、大致来说这是一个针对Qt的轻量级的日志库,就我个人使用的经验来看,上手还算快,但是似乎有些小bug,只能说是凑活。而且近些年来都没新的checkin,貌似已经dead。
2、在gitorious上有关于这个项目的一个fork:https://gitorious.org/log4qt,除了添加了一些新的log appender之外,还增加了编译脚本的支持。
注一:这个国庆节我尝试着编译和使用这个版本的log4qt,期间有一些问题和解决方法,记录于此:
        2.1 如何使用msvc 2008编译log4qt:
cmake -DQT_USE_QTSQL=TRUE -DQT_USE_QTNETWORK=TRUE -DCMAKE_BUILD_TYPE=Release -G "Visual Studio 9 2008"
cmake --build .
        2.2 如何在Qt项目中使用log4qt:
通过打开msvc project,并生成其中的install project来完成安装,安装完毕后,所有的文件会被拷贝到C:\Program Files\log4qt下面,在Qt项目中,使用如下语句来完成安装:
INCLUDEPATH += "C:/Program Files/Log4Qt/include"
LIBS += -L"C:/Program Files/Log4Qt/lib" -lLog4Qt 
        2.3 还可以使用直接include pri文件的方式来将Log4Qt直接加入到项目中。

参考资料:
1、关于如何在Qt项目中使用log4qt的中文使用帮助:http://blog.csdn.net/dbzhang800/article/details/6916948;

boost log

官网:http://www.boost.org/doc/libs/1_54_0/libs/log/doc/html/index.html
1、在写这篇博文的时候,我还只是知道有这么个东西,不过心中对其期许蛮大,认为有深入研究和学习的价值。 预留这个位置,为日后有时间来研究它时记录一些笔记。

参考资料:
1、关于如何编译boost log 2.0:http://stackoverflow.com/questions/6076405/what-is-boost-log-how-to-get-it-and-how-to-build-it;

Log4CXX

官网:http://logging.apache.org/log4cxx/
1、该库在使用方式上port了log4j,因此有相关经验的朋友应该很容易上手;
2、在Qt项目中使用编译好的log4cxx:
INCLUDEPATH += "$$_PRO_FILE_PWD_/log4cxx/win32/include"
LIBS += -L"$$_PRO_FILE_PWD_/log4cxx/win32/lib" -llog4cxx

include目录拷贝自原source下面的include目录,lib目录放入编译好的log4cxx.dll和log4cxx.lib文件即可。这种方式采用的是静态编译,不需要把DLL拷贝到执行目录下面。

3、log4cxx的优点在于是针对所有的C++项目均可使用的;而且其使用方法和配置文件均与log4j相似,这样使得在不同的语言间切换时,不需要额外的学习代价;还有个我最为看重的就是它是apache的子项目,这使得它的稳定性和开发质量都有了保证。


STLogFile

这个没有官网了,我是从别人的博客中了解到这个东东的,在网上搜了好久,找到了一份拷贝,把它checkin到了我自己的git库中:

https://github.com/edychang/mytoolkits/blob/master/cpp-tparty/STLogFile/STLogFile.h

日志的目的是为了记录运行情况,辅助调试。一个轻量级的日志库(哪怕用途不那么普及,考虑不那么周全,功能不那么强大),只要能满足基本的日志功能,自然是越轻量越好。

这个就是一个例子,只有一个头文件,足够轻量了。


参考资料:
1、关于如何在Windows上面编译:http://blog.sina.com.cn/s/blog_a459dcf501013tbn.html

2、关于如何使用Log4cxx:http://saupb.blog.163.com/blog/static/4712417820112951932781/

原创粉丝点击