Google glog介绍

Google glog是一个基于程序级记录日志信息的C++库,编程使用方式与C++的stream操作类似。LOG(INFO) << "Found" << num_cookies << "cookies",”LOG”宏为日志输出关键字,”INFO”为严重性程度

  • 参数设置,以命令行参数的方式设置标志参数来控制日志记录行为
  • 严重性分级,根据日志严重性分级记录日志
  • 条件中止程序,丰富的条件判定宏,可预设程序终止条件
  • 异常信号处理,程序异常情况,可自定义异常处理过程
  • 支持debug功能,可只用于debug模式
  • 自定义日志信息

参数设置

通过命令行方式设置glog的标志参数,用来控制日志记录行为

有条件地记录日志信息

LOG_IF(INFO, num_cookies > 10) << "Got lots of cookies" 当条件不满足,即num_cookies > 10时,”Got lots of cookies”信息才被记录

LOG_EVERY_N(INFO, 10) << "Got the " << COUNTER << "th cookie" 在程序中周期性的记录日志信息,在该语句第1, 11, 21 … 次被执行的时候,记录日志信息

LOG_FIRST_N(INFO, 20) << "Got the " << COUNTER << "th cookie" 当该语句只在首次执行了20次以后记录日志信息,COUNTER变量表示该语句被执行的次数

有条件地中止程序

CHECK宏,用于调试的时候中止程序,及早发现程序错误。当通过该宏指定的条件不成立的时候,程序会中止,并且记录对应的日志记录。功能类似ASSERT,区别是CHECK宏不受NDEBUG约束,在release版中同样有效。

CHECK(fp->Write(x) == 4) << "Write failed!" 当fp->Write(x) == 4 成立时,记录”Write failed!”日志信息,且中止程序

判断大小关系:

  • CHECK_EQ 相等
  • CHECK_NE 不相等
  • CHECK_LE 小于等于
  • CHECK_LT 小于
  • CHECK_GE 大于等于
  • CHECK_GT 大于

判断指针是否为空

  • CHECK_NOTNULL(some_ptr)

判断字符串是否相等

  • CHECK_STREQ
  • CHECK_STRNE
  • CHECK_STRCASEEQ
  • CHECK_STRCASENE