目录
google glog详解
glog是google的日志管理系统,配合gflags库,通过命令行参数管理日志。
安装
源码下载:https://github.com/google/glog
ubuntu安装:
sudo apt-get install libgoogle-glog*
参考博客:
https://blog.csdn.net/jcjc918/article/details/51682853
https://www.cnblogs.com/hiloves/p/6009707.html
基础用法
头文件:
#include <glog/logging.h>
四个打印级别:
LOG(INFO) << "<INFO> Hello World!";
LOG(WARNING) << "<WARNING> Hello World!";
LOG(ERROR) << "<ERROR>Hello World!";
LOG(FATAL) << "<FATAL>Hello World!";
其他用法:
## 简单的输出日志
LOG(INFO) << "message";
## 按条件输出日志
LOG_IF(INFO, a > 0) << "message";
## CHECK 类 宏,检查某个条件是否成立,如果不成立,输出信息后将退出
## 注意这和 assert 不同,assert 只在 debug 模式下存在
## 检测结果是否为 true
CHECK(a > 0) << "message";
## 检测两个值是否相等
CHECK_EQ(a, b) << "message";
## 坚持两个值是否不相等
CHECK_NE(a, b) << "message";
## 检测是否为空指针,将返回该指针
CHECK_NOTNULL(p);
## 打印系统错误
PLOG();
PLOG_IF();
PCHECK();
例子:
使用glog之前必须先初始化库,要生成日志文件只需在开始log之前调用一次:
google::InitGoogleLogging(argv[0]); //括号内是程序名
当要结束glog时必须关闭库,否则会内存溢出:
google::ShutdownGoogleLogging();
设置日志文件保存目录,这个目录必须是已经存在的,否则不能生成日志文件。必须在初始化库之前调用。
FLAGS_log_dir = "c:\\Logs";
google::SetLogDestination(google::GLOG_INFO, "log/prefix_"); //设置特定严重级别的日志的输出目录和前缀。第一个参数为日志级别,第二个参数表示输出目录及日志文件名前缀
google::SetLogFilenameExtension("logExtension"); //在日志文件名中级别后添加一个扩展名。适用于所有严重级别
google::SetStderrLogging(google::GLOG_INFO); //大于指定级别的日志都输出到标准输出
// Start google log system:
FLAGS_log_dir = "c:\\Logs";
google::InitGoogleLogging(argv[0]);
google::SetLogDestination(google::GLOG_INFO, "c:\\Logs\\INFO_");
google::SetStderrLogging(google::GLOG_INFO);
google::SetLogFilenameExtension("log_");
FLAGS_colorlogtostderr = true; // Set log color
FLAGS_logbufsecs = 0; // Set log output speed(s)
FLAGS_max_log_size = 1024; // Set max log file size
FLAGS_stop_logging_if_full_disk = true; // If disk is full
char str[20] = "hello log!";
LOG(INFO) << str;CStringA cStr = "hello google!";LOG(INFO) << cStr;
LOG(INFO) << "info test" << "hello log!"; //输出一个Info日志
LOG(WARNING) << "warning test"; //输出一个Warning日志
LOG(ERROR) << "error test"; //输出一个Error日志
google::ShutdownGoogleLogging();