C++开源日志库--Glog的使用

公司其他同事大多做C#的,公司内部暂时也没用提供自己的C++日志库,由于项目较紧急,所以就准备选一个开源日志库使用,由于以前做过java,用的Log4j比较强大,但是查了下,其使用起来有点复杂。所以就想到最伟大的公司google了,其Glog使用还是比较简单的,源码下下来直接用VS编译生成lib和dll库,源码文件中都有现成的vs工程。


开源项目首页:https://code.google.com/p/google-glog/

Glog项目路径: https://code.google.com/p/google-glog/downloads/list


第一步,下载glog-0.3.3.tar.gz,解压,直接打开google-glog.sln工程文件,如果vs版本不对,让其自动转换


第二步,编译,在Debug下生成libglog.dll、 libglog.lib、libglog_static.lib


第三步,将头文件和lib库拷贝到自己的工程下,由于我暂时是window下使用,头文件使用 \glog-0.3.3\src\windows\glog


第四步,引用到自己工程下,编译发现报错:


1>d:\workspace\video\videomanage\devicemgr\lib\glog\glog\log_severity.h(55): fatal error C1189: #error :  ERROR macro is defined. Define GLOG_NO_ABBREVIATED_SEVERITIES before including logging.h. See the document for detail.
1>  SessionMgr.cpp
1>d:\workspace\video\videomanage\devicemgr\lib\glog\glog\log_severity.h(55): fatal error C1189: #error :  ERROR macro is defined. Define GLOG_NO_ABBREVIATED_SEVERITIES before including logging.h. See the document for detail.
1>  SessionFactory.cpp
1>d:\workspace\video\videomanage\devicemgr\lib\glog\glog\log_severity.h(55): fatal error C1189: #error :  ERROR macro is defined. Define GLOG_NO_ABBREVIATED_SEVERITIES before including logging.h. See the document for detail.
1>  RealTimeStreamSession.cpp
1>d:\workspace\video\videomanage\devicemgr\lib\glog\glog\log_severity.h(55): fatal error C1189: #error :  ERROR macro is defined. Define GLOG_NO_ABBREVIATED_SEVERITIES before including logging.h. See the document for detail.
1>  main.cpp
1>d:\workspace\video\videomanage\devicemgr\lib\glog\glog\log_severity.h(55): fatal error C1189: #error :  ERROR macro is defined. Define GLOG_NO_ABBREVIATED_SEVERITIES before including logging.h. See the document for detail.
1>  GNumGenerator.cpp
1>d:\workspace\video\videomanage\devicemgr\lib\glog\glog\log_severity.h(55): fatal error C1189: #error :  ERROR macro is defined. Define GLOG_NO_ABBREVIATED_SEVERITIES before including logging.h. See the document for detail.
1>  DevicControlSession.cpp
1>d:\workspace\video\videomanage\devicemgr\lib\glog\glog\log_severity.h(55): fatal error C1189: #error :  ERROR macro is defined. Define GLOG_NO_ABBREVIATED_SEVERITIES before including logging.h. See the document for detail.
1>  CatalogSesssion.cpp
1>d:\workspace\video\videomanage\devicemgr\lib\glog\glog\log_severity.h(55): fatal error C1189: #error :  ERROR macro is defined. Define GLOG_NO_ABBREVIATED_SEVERITIES before including logging.h. See the document for detail.

进入log_severity.h头文件查看,是一个宏定义的地方出现了冲突:

#ifndef GLOG_NO_ABBREVIATED_SEVERITIES
# ifdef ERROR
#  error ERROR macro is defined. Define GLOG_NO_ABBREVIATED_SEVERITIES before including logging.h. See the document for detail.
# endif
const int INFO = GLOG_INFO, WARNING = GLOG_WARNING,
  ERROR = GLOG_ERROR, FATAL = GLOG_FATAL;
#endif

解决方法:

在工程加上预编译宏GLOG_NO_ABBREVIATED_SEVERITIES

C/C++   -->  预处理器   -->   预处理器定义   -->  加上GLOG_NO_ABBREVIATED_SEVERITIES宏   保存,编译通过~



第五步,自己的项目中使用


#include "glog/logging.h"
int _tmain(int argc, _TCHAR* argv[])
{	
	google::InitGoogleLogging((const char *)argv[0]);  //参数为自己的可执行文件名

	google::SetLogDestination(google::GLOG_INFO,"./myInfo");

	LOG(INFO) << "This is a <Warn> log message..." << ;


         .....................

}


搞定,后面就是将这些日志在工程中使用起来了。





  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在C++程序中使用glog,需要按照以下步骤进行操作: 1. 下载glog并进行编译安装。 2. 在程序中引入glog头文件:`#include <glog/logging.h>` 3. 初始化glog,在main函数中调用:`google::InitGoogleLogging(argv[0]);` 4. 在程序需要记录日志的地方使用glog提供的宏进行记录。例如:`LOG(INFO) << "message";` 5. 可以使用不同的日志级别进行记录,如:`LOG(INFO)`、`LOG(WARNING)`、`LOG(ERROR)`、`LOG(FATAL)`等。 6. 可以通过设置`FLAGS_log_dir`变量,指定日志文件的存储路径。 7. 在程序结束前,可以调用`google::ShutdownGoogleLogging();`来停止glog的日志记录。 下面是一个简单的例子: ```c++ #include <iostream> #include <glog/logging.h> int main(int argc, char* argv[]) { google::InitGoogleLogging(argv[0]); LOG(INFO) << "Program start."; int a = 10, b = 0; if (b == 0) { LOG(ERROR) << "Division by zero!"; } else { LOG(INFO) << "a / b = " << a / b; } LOG(INFO) << "Program end."; google::ShutdownGoogleLogging(); return 0; } ``` 这段程序中,我们在程序开始和结束时记录了日志,同时在进行除法运算时,如果除数为0则记录了一个错误日志。执行程序后,会在控制台上输出日志信息: ``` I0714 16:22:10.187763 3221 main.cpp:7] Program start. E0714 16:22:10.187795 3221 main.cpp:12] Division by zero! I0714 16:22:10.187804 3221 main.cpp:14] Program end. ``` 同时会在默认路径下生成一个日志文件,记录了同样的日志信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值