1.下载源码
https://gitee.com/dingjianfei/glog
2.解压在同目录下创建bulid文件夹(vs工程目录) 和 install文件夹(生成库文件和头文件)
3.cmake编译
需要改生成目录
编译ALL_BUILD和INSTALL生成库目录
4.glog代码使用
使用时需要应用在install文件夹的include和bll和lib文件,预处理器设置GLOG_NO_ABBREVIATED_SEVERITIES
1.日志级别
enum SeverityLevel
{
google::INFO = 0,
google::WARNING = 1,
google::ERROR = 2,
google::FATAL = 3,
};
2.初始化
google::InitGoogleLogging(argv[0]);
3.销毁
google::ShutdownGoogleLogging();
4.参数设置
FLAGS_logtostderr = true; //设置日志消息是否转到标准输出而不是日志文件
FLAGS_alsologtostderr = true; //设置日志消息除了日志文件之外是否去标准输出
FLAGS_colorlogtostderr = true; //设置记录到标准输出的颜色消息(如果终端支持)
FLAGS_log_prefix = true; //设置日志前缀是否应该添加到每行输出
FLAGS_logbufsecs = 0; //设置可以缓冲日志的最大秒数,0指实时输出
FLAGS_max_log_size = 10; //设置最大日志文件大小(以MB为单位)
FLAGS_stop_logging_if_full_disk = true; //设置是否在磁盘已满时避免日志记录到磁盘
5.常用函数
google::SetLogDestination(google::GLOG_INFO, "log/prefix_"); //设置特定严重级别的日志的输出目录和前缀。第一个参数为日志级别,第二个参数表示输出目录及日志文件名前缀
google::SetLogFilenameExtension("logExtension"); //在日志文件名中级别后添加一个扩展名。适用于所有严重级别
google::SetStderrLogging(google::GLOG_INFO); //大于指定级别的日志都输出到标准输出
6.条件设置
LOG_IF(INFO, num_cookies > 10) << "Got lots of cookies"; //当条件满足时输出日志
LOG_EVERY_N(INFO, 10) << "Got the " << google::COUNTER << "th cookie"; //google::COUNTER 记录该语句被执行次数,从1开始,在第一次运行输出日志之后,每隔 10 次再输出一次日志信息
LOG_IF_EVERY_N(INFO, (size > 1024), 10) << "Got the " << google::COUNTER << "th big cookie"; //上述两者的结合,不过要注意,是先每隔 10 次去判断条件是否满足,如果滞则输出日志;而不是当满足某条件的情况下,每隔 10 次输出一次日志信息
LOG_FIRST_N(INFO, 20) << "Got the " << google::COUNTER << "th cookie"; //当此语句执行的前 20 次都输出日志,然后不再输出
7.例子
#include <iostream>
#include <glog/logging.h>
void test(const std::string& args)
{
FLAGS_log_dir = "log";
FLAGS_stderrthreshold = 0;
FLAGS_colorlogtostderr = true;
FLAGS_logbufsecs = 0;
FLAGS_max_log_size = 1024;
FLAGS_stop_logging_if_full_disk = true;
google::InitGoogleLogging(args.data());
google::SetLogDestination(google::GLOG_INFO, "log/INFO_");
google::SetLogDestination(google::GLOG_INFO, "log/DEBUG_");
google::SetLogFilenameExtension(".log");
LOG(INFO) << "Google test";
LOG(WARNING) << "Google test";
LOG(ERROR) << "Google test";
}
int main(int argc,char* argv[])
{
test(argv[0]);
return 0;
}