Google Logging Library(glog)使用

简介

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日志命名为:...log...

使用Flags

如果安装了Google gflags library,可以配合一起使用。例如,如果想使用–logtostderr,可以使用命令行

1
./your_application --logtostderr=1

如果没安装Google gflags library,可以加上前缀“GLOG_”

1
GLOG_logtostderr=1 ./your_application

下面几个是常用的flags

1
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”;
```

宏检查

文章目录
  1. 1. 简介
  2. 2. 安装
  3. 3. 日志级别
  4. 4. 使用Flags
  5. 5. 宏检查
,
#add by kangyabing