google glog编译及使用

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;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值