glog是Google推出的轻量级C++ log开源库,使用起来比较简单,自己可以下载源码直接编译,支持Windows和linux
下载编译
glog下载路径
-
https://code.google.com/p/google-glog/ 需要翻墙才能下载,目前项目已经迁移到github
-
https://github.com/google/glog github路径
目前github上面最新过的代码已经更新到0.3.4,本文使用0.3.3编译使用,使用环境为Windows 7,编译工具VS2013。
编译
解压下载到的压缩包glog-0.3.3.tar.gz,进入解压后的目录,可以看到工程文件,源码包中的默认工程为VS2008,工程文件名:google-glog.sln,可以使用vs2008编译,也可以使用更高版本的工具进行编译
本文采用VS2013进行编译,将工程文件使用VS2013打开,会进行自动转换,转换完成后,编译,会发现报错,见下图:
在logging.cc中增加#include <algorithm>
解决该问题
编译完成后,得到3个文件 libglog.dll,libglog.lib,libglog_static.lib,这里我们使用动态库 libglog.dll,libglog.lib。
使用以及配置
头文件和 libglog.dll,libglog.lib 拷贝到自己的工程下,做好配置
头文件去源码路径下去取:glog-0.3.3\src\windows\glog
引入头文件后,可以回报一些路径错误,简单修改路径即可解决,错误如下:
logging.h中
#include "glog/log_severity.h"
#include "glog/vlog_is_on.h"
修改为:
#include "log_severity.h"
#include "vlog_is_on.h"
vlog_is_on.h中
#include "glog/log_severity.h"
修改为:
#include "log_severity.h"
头文件引入后,需要注意,需要手动添加预定义宏,才可以正常使用,否则会编译报错,添加如下:
fatal error C1189: #error : ERROR macro is defined. Define GLOG_NO_ABBREVIATED_SEVERITIES before including logging.h. See the document for detail.
添加宏:GLOG_NO_ABBREVIATED_SEVERITIES
添加路径:C/C++->Preprocessor->Preprocessor Definitions
添加完成后,就可以正常使用了
事例如下:
int _tmain(int argc, _TCHAR* argv[])
{
google::InitGoogleLogging((const char *)argv[0]);
google::SetLogDestination(google::GLOG_INFO, "E:\\glogfile\\loginfo");
google::SetLogDestination(google::GLOG_WARNING,"E:\\glogfile\\logwarn");
LOG(INFO) << "This is a <Info> log message...";
LOG(WARNING) << "This is a <Warn> log message...";
}
glog配置以及使用注意
glog内部是单例的模式,只要初始化一次,就可以在工程中正常使用。
初始化的函数为:google::InitGoogleLogging(“test”);参数填写字符串即可
在工程中调用一次InitGoogleLogging,调用多次会报错,在退出的时候注意需要调用google::ShutdownGoogleLogging();结束
参数配置:
FLAGS_alsologtostderr = false;//设置false不输出日志到控制台上
FLAGS_logbufsecs = 0;//实时刷新日志到硬盘,默认是会缓冲的
FLAGS_max_log_size = 30;//日志大小大于30M时,创建新的日志
只列举了几个参数配置,具体的可以参考官方文档说明或者代码
log样例:
Log file created at: 2015/10/24 12:12:47
Running on machine: JIACUNXU
Log line format: [IWEF]mmdd hh:mm:ss.uuuuuu threadid file:line] msg
I1024 12:12:47.639955 4732 test.cpp:13] init
日志内容个是可以参照红色部分
以上为本文内容,希望对大家有帮助!