标签:
今天想给我的C++项目找一个开源的日志类,用于记录系统日志,结果浪费了半个下午的时间。从网上搜索相关资料,找到以下几个备选方案:
1、log4cplus 下载地址:http://sourceforge.net/projects/log4cplus/files/log4cplus-stable/1.1.0
2、log4cxx 下载地址:http://logging.apache.org/log4cxx/download.html (log4cxx 是由JAVA实现的 log4j 开源的,用C++实现的一个开源库)
3、glog 下载地址:http://code.google.com/p/google-glog/downloads/list
4、log4cpp 下载地址: http://sourceforge.net/projects/log4cpp/files
我初步看了一下,第1个和第4个是sourceforge网站上的开源项目,不知道是不是被屏蔽了,总之是打不开网页。浪费我半小时找代理和FQ,均找不到。看到第2个是Java注明的日志类log4j的姊妹C++版,顿时感觉应该不错,结果编译的过程让我直接疯掉了。先是下载log4cxx源代码,又说光下载这个还不够,还要下载另外两个Apache项目(apr、apr-util)代码,下完这三个还不行,在Windows下编译还需要下一个Windows X64版本的Sed,好吧,这还不算数,居然还是链接失败,网上还找不到相应的解决方案,整个过程浪费我4个小时。
所以今天的教训就是,人家的开源项目根本就不待见Windows平台,或者说根本不待见我这样的菜鸟。既然我是Windows平台上的一只小菜鸟,那我就老老实实用简单的东西吧。从第三方网站上下载Google glog,编译一下居然轻松通过,很好!
1、从网上下载google-glog-v0.3.4-50-gde75983.zip,解压到本地,可以看到工程文件google-glog.sln,可以用Visual Studio 2008打开。
2、直接编译就可以得到libglog.dll、libglog.lib等文件,这里的lib文件在编译时要用,而dll文件则是运行时要用的,可以看出这里的glog采用的是“隐式”动态链接库编译方法。
3、将解压出来的文件夹路径:“google-glog\src\windows”添加到Visual Studio 2008 的工程路径中,以便于引用头文件。同时将上一步编译出来的lib文件加入路径或者直接拷贝到自定义工程路径中;
4、使用如下代码可以测试使用:
1 #include <iostream> 2 using namespace std; 3 4 #include <glog/logging.h> 5 #pragma comment(lib, "libglog.lib") 6 7 int main(int argc, char **argv) 8 { 9 google::InitGoogleLogging("KLH"); 10 google::SetLogDestination(google::INFO, "F://"); 11 12 char str[20] = "hello log!"; 13 LOG(INFO) << "Found " << google::COUNTER <<endl; 14 LOG(INFO) << str ; // << " cookies"; 15 LOG(WARNING) << "warning test"; // 会输出一个Warning日志 16 LOG(ERROR) << "error test"; // 会输出一个Error日志 17 18 system("pause"); 19 return 0; 20 }
5、编译生成的exe文件还不能直接运行,需要将第3步编译的dll文件拷贝到相同目录中才能运行。测试的日志文件自动生成在F:/根目录中。类似于如下格式内容:
1 Log file created at: 2015/12/14 20:28:18 2 Running on machine: VICTO-PC 3 Log line format: [IWEF]mmdd hh:mm:ss.uuuuuu threadid file:line] msg 4 I1214 20:28:18.590252 9648 main2.cpp:13] Found 0 5 I1214 20:28:18.591253 9648 main2.cpp:14] hello log! 6 W1214 20:28:18.591253 9648 main2.cpp:15] warning test 7 E1214 20:28:18.592252 9648 main2.cpp:16] error test
标签:
原文地址:http://www.cnblogs.com/kuliuheng/p/5046101.html