最近打算搞一个c++的日志,网上有log4cpp、log4cplus、log4cxx,开始以为是同一个家伙,最后才知道原来是三家的东西,我擦。。。
最后确定使用log4cplus,从网上也找了一些资料,但是开始总是不是我想要的东西,最后看到一个比较有建设性的博客,参考人家的次序一步步坐了下来,但是最后我依然有问题,各种找原因,最后终于能够写出日志了,所以把这个受折磨的过程记录下来,以备以后使用
第一步,下载log4cplus,本文使用的是1.1.3,路径为log4cplus 1.1.3
第二步,编译。首先先打开工程中的msvc10,里面有个熟悉的.sln,双击打开,会看到如图所示的内容
开始我是把这五个工程一个一个的编译过去,其实最后发现,只需要编译log4cplus和log4cplusS就行,我们最终的目的是要得到这三个文件log4cplusD.dll、log4cplusD.lib和log4cplusSD.lib。其中前两个需要配合使用,第三个就可以独立使用了。
第三步,添加h和lib。为了省事起见,可以把log4cplus-1.1.3-rc3\include路径下的log4cplus都拷贝到vs2010的安装目录的VC\include下,如图
把上面提到的两个lib拷贝到vs2010下的vc/lib下,把上面提到的一个dll,拷贝到vc/bin下,示例图效果类似上图,就不附图了
或者为了后续的扩展方便,可以把对应的这些头文件和lib、dll拷贝到工程中,具体路径自己随意,但是只要保障能够找到对应内容就行了,如果实在没把握,可以参考小弟我的这个样子,先放到安装目录下,至少我可以确保你按我说的做,肯定能看到效果,扯远了,,,,
第四步:建一个工程,只需要有一个cpp文件就够了,但是需要在“属性--链接器--输入--附加依赖项--编辑”中添加刚才说的lib文件,如图
图上使用的是log4cplusSD.lib,这个可以自己单练的,如果使用了log4cplusD.lib的话,它得和log4cplusD.dll一起干活儿才行
然后说一下代码,源码见下
#include "log4cplus\logger.h"
#include "log4cplus\fileappender.h"
#include "log4cplus\configurator.h"
#include <log4cplus/loggingmacros.h>
#include <iomanip>
using namespace log4cplus;
int main()
{
SharedAppenderPtr append(new FileAppender("Test.log"));
append->setName("file log test");
// BasicConfigurator config;
// config.configure();
Logger logger = Logger::getInstance("test.subtest_of_filelog!");
logger.addAppender(append);
// LOG4CPLUS_WARN(logger, "Hello, World!");
// getchar();
LOG4CPLUS_DEBUG(logger,"Entering log $#$ # End line#");
return 0;
}
其中的第四行,在开始的时候我是没有添加的,但是这样在执行的时候,一直会报一个“LOG4CPLUS_DEBUG找不到标示符的错误”,郁闷了半天,最终从网上看到一个帖子,那位大拿建议添加第四行的内容,顺利通过了。。。。 帖子见右侧 解决问题的大拿帖子
到这儿为止,如果你按照我的这个过程走一遍的话,至少你能看到最终输出的日志结果了,如果再想进一步研究,网上例子很多,但是我觉得新手的话,第一个demo还是很重要的,所以才有这个帖子的诞生,不足之处,欢迎诸位指正