介绍
google 出的一个C++轻量级日志库,支持以下功能:
- 参数设置,以命令行参数的方式设置标志参数来控制日志记录行为;
- 严重性分级,根据日志严重性分级记录日志;
- 可有条件地记录日志信息;
- 条件中止程序。丰富的条件判定宏,可预设程序终止条件;
- 异常信号处理。程序异常情况,可自定义异常处理过程;
- 支持debug功能;
- 自定义日志信息;
- 线程安全日志记录方式;
- 系统级日志记录;
- google perror风格日志信息;
- 精简日志字符串信息
安装
下载地址:https://code.google.com/p/google-glog/downloads/list
解压安装:
tar zxvf glog-0.3.3.tar.gz && cd glog-0.3.3 && ./configure && make
头文件目录为/src/glog
,链接库为.libs/libglog.{a,so}
帮助文档为doc/glog.html
或直接访问以下 URL:http://google-glog.googlecode.com/svn/trunk/doc/glog.html
使用
头文件#include <glog/logging.h>
glog
中的日志分为4个级别,即INFO,WARNING,ERROR,FATAL
、分别对应数字0, 1, 2, 3
。
对应级别的日志打印在对应级别的日志文件中。并且高级别的日志同时打印在本级别和低级别中。例如INFO
中, 会有WARNING
级别的输出。
初始化参数
FLAGS_log_dir
日志输出目录FLAGS_v
自定义VLOG(m)
时,m
值小于此处设置值的语句才有输出FLAGS_max_log_size
每个日志文件最大大小(MB
级别)FLAGS_minloglevel
输出日志的最小级别,即高于等于该级别的日志都将输出。
glog
是根据进程ID
来区分文件的,如果你重新启动了程序,则log
文件的名字就会变。
示例
#include <iostream>
#include <string.h>
#include <stdio.h>
#include <glog/logging.h>
using namespace std;
int main(int argc, char **argv)
{
google::InitGoogleLogging(argv[0]);
FLAGS_log_dir = "./log"; //存储日志的路径
LOG(INFO) << "frank";
LOG(WARNING) << "Hello";
google::ShutdownGoogleLogging(); //与google::InitGoogleLogging(argv[0]);成对使用,不然会内存泄漏
return 0;
}
在log文件夹下能够看到日志的情况
-rw-rw-r-- 1 fangjin fangjin 265 Sep 17 17:46 test_glog.cp01-rdqa-dev168.cp01.baidu.com.fangjin.log.INFO.20160917-174615.22494
-rw-rw-r-- 1 fangjin fangjin 213 Sep 17 17:46 test_glog.cp01-rdqa-dev168.cp01.baidu.com.fangjin.log.WARNING.20160917-174615.22494
lrwxrwxrwx 1 fangjin fangjin 80 Sep 17 17:46 test_glog.INFO -> test_glog.cp01-rdqa-dev168.cp01.baidu.com.fangjin.log.INFO.20160917-174615.22494
lrwxrwxrwx 1 fangjin fangjin 83 Sep 17 17:46 test_glog.WARNING -> test_glog.cp01-rdqa-dev168.cp01.baidu.com.fangjin.log.WARNING.20160917-174615.22494
主要是test_glog.WARNING
文件和test_glog.INFO
文件,
例如,其中test_glog.INFO
如下
Log file created at: 2016/09/17 17:46:15
Running on machine: fang
Log line format: [IWEF]mmdd hh:mm:ss.uuuuuu threadid file:line] msg
I0917 17:46:15.434000 22494 test_glog.cpp:24] frank
W0917 17:46:15.434185 22494 test_glog.cpp:25] Hello
进阶
还可以使用条件输出等,暂留。
参考 http://www.cnblogs.com/tianyajuanke/archive/2013/02/22/2921850.html