如何安装
glog 是一个 C++ 日志库,它提供 C++ 流式风格的 API。在安装 glog 之前需要先安装 gflags,这样 glog 就可以使用 gflags 去解析命令行参数(可以参见 gflags 安装教程)。下面是 glog 的安装步骤:
安装之后要怎么使用 glog 呢?如果程序是使用 CMake 构建的,那么只要在 CMakeListsx.txt 里面加上下面几行配置就可以了:
日志级别
glog 支持四种日志级别,INFO
、WARNING
、ERROR
和FATAL
。默认情况下,在打印完FATAL
日志之后,程序将会终止。ERROR
和FATAL
的日志除了会写到日志中,还会输出到 stderr。
日志配置
默认情况下,glog 会将日志输出到 /tmp 目录下,日志文件命名格式为:
那么要怎样改变日志的目录呢?可以通过命令行 flag log_dir
指定日志目录,例如:
glog 还支持其它的命令行 flag:
logtostderr
将日志输出到 stderr,不输出到日志文件,默认值是 false。minloglevel
如果程序输出的日志的级别大于或等于这个值,那么日志就会被记录下来,它的默认值是 0,代表INFO
(1 代表WARNING
,2 代表ERROR
,而 3 代表FATAL
)。
调试模式
一种常见的调试手段就是使用 debug 日志,在调试模式下 (也即没有开启NDEBUG
),可以使用DLOG()
来输出 debug 日志,例如:
检查程序错误
glog 提供了CHECK()
宏帮助我们检查程序的错误,当CHECK()
的条件不满足时,它会记录FATAL
日志并终止程序:
与assert()
不同的是,无论程序是否开启NODEBUG
,CHECK()
都会执行。除了CHECK()
,glog 还提供其它的宏,包括CHECK_EQ()
、CHECK_NE()
、CHECK_LE()
、CHECK_LT()
、CHECK_GE()
和CHECK_GT()
。
在判断指针是否为NULL
时,需要注意先将NULL
转换成为相应的类型,然后再进行比较:
glog 还提供了其它宏用来检查char *
类型的字符串,包括CHECK_STREQ()
、CHECK_STRNE()
、CHECK_STRCASEEQ()
和CHECK_STRCASENE()
,带有 CASE 的版本表示大小写不敏感的。传递NULL
值给这些宏是安全的。
另外,可以使用CHECK_DOUBLE_EQ()
检查两个浮点数是否相等,允许出现比较小的误差。如果需要自己提供可以接受的误差范围,可以使用CHECK_NEAR()
,它的第三个参数为用户指定的误差范围。