简介
Google Logging Library简称glog,它是基于C++风格的开源日志库,可以像操作流一样输出日志,且定义了各种宏定义了辅助操作。可以通过日志级别来输出日志、通过命令行控制日志、打印条件日志,也可以像断言一样检查条件,不满足条件时终止程序。
-
安装
下载源码:点击这里
安装:1
2
3
4./configure --prefix=$INSTALL_DIR
make
make check
make install
日志级别
日志分为不同级别,不同级别的日志保存在不同的文件。日志级别依次递增为:INFO、WARNING、ERROR、FATAL。FATAL级别的日志不仅会输出日志,还会终止程序。高级别的日志会输出到低级别的日志文件中。
在debug模式下(没有定义宏NDEBUG),DFATAL会打印FATAL日志,但是不会终止程序,降为ERROR级别日志。
glog日志命名为:
使用Flags
如果安装了Google gflags library,可以配合一起使用。例如,如果想使用–logtostderr,可以使用命令行1
./your_application --logtostderr=1
如果没安装Google gflags library,可以加上前缀“GLOG_”1
GLOG_logtostderr=1 ./your_application
下面几个是常用的flags1
logtostderr(bool, default = false)
日志输出到stderr,而不是输出到文件1
stderrthreshold(int, default=2, which is ERROR)
这个级别以上的日志除了输出到日志文件,还输出到stderr。INFO, WARNING, ERROR, FATAL 值为 0, 1, 2, 3。1
log_dir (string, default="")
日志的输出目录1
2
3
## 条件日志
有时希望根据条件来打印日志
LOG_IF(INFO, num_cookies > 10) << “Got lots of cookies”;1
当`num_cookies`大于10时才会打印。这样会打印很多日志,希望每隔10次打印一条日志,可以这样:
LOG_EVERY_N(INFO, 10) << “Got the “ << google::COUNTER << “th cookie”;1
可以把上面两个结合起来使用:
LOG_IF_EVERY_N(INFO, (size > 1024), 10) << “Got the “ << google::COUNTER
<< “th big cookie”;1
只有前N次才输出
LOG_FIRST_N(INFO, 20) << “Got the “ << google::COUNTER << “th cookie”;1
2
3
## 调试模式
调试模式的日志宏只在调试模式起作用,例如:
DLOG(INFO) << “Found cookies”;
DLOG_IF(INFO, num_cookies > 10) << “Got lots of cookies”;
DLOG_EVERY_N(INFO, 10) << “Got the “ << google::COUNTER << “th cookie”;
```