C++ glog使用教程与代码演示

glog repo: https://github.com/google/glog

clone代码之后,可以使用CMake进行编译,
在这里插入图片描述
使用vs2019编译后,会产生include lib dll, 在项目中包含之后就可以使用了。

也可以直接使用vcpkg进行安装
在这里插入图片描述

glog的日志级别

glog 支持四种日志级别,INFO、WARNING、ERROR和FATAL。不同级别的日志信息会输出到不同文件,同时高级别的日志也会写入到低级别中。默认情况下,在打印完FATAL日志之后,程序将会终止。ERROR和FATAL的日志除了会写到日志中,还会输出到 stderr。

enum SeverityLevel
{
    
    
  google::INFO = 0,
  google::WARNING = 1,
  google::ERROR = 2,
  google::FATAL = 3,
};

日志格式

日志格式:I+日期 时:分:秒.微秒 线程号 源文件名:行数] 信息

设置输出到指定目录

// 设置特定严重级别的日志的输出目录和前缀
// 第一个参数为日志级别,第二个参数表示输出目录及日志文件名前缀
google::SetLogDestination(google::GLOG_INFO, "D:/glog_path/INFO_");  
google::SetLogDestination(google::GLOG_WARNING, "D:/glog_path/WARNING_");
google::SetLogDestination(google::GLOG_ERROR, "D:/glog_path/ERROR_");
google::SetLogDestination(google::GLOG_FATAL, "D:/glog_path/FATAL_");

//在日志文件名中级别后添加一个扩展名
google::SetLogFilenameExtension(".log");  

示例代码

// glog_test.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#define GLOG_NO_ABBREVIATED_SEVERITIES

#include <iostream>
#include <glog/logging.h>

int main()
{
    
    
	google::InitGoogleLogging("");

	// 设置特定严重级别的日志的输出目录和前缀
	// 第一个参数为日志级别,第二个参数表示输出目录及日志文件名前缀
	google::SetLogDestination(google::GLOG_INFO, "D:/glog_path/INFO_");  
	google::SetLogDestination(google::GLOG_WARNING, "D:/glog_path/WARNING_");
	google::SetLogDestination(google::GLOG_ERROR, "D:/glog_path/ERROR_");
	google::SetLogDestination(google::GLOG_FATAL, "D:/glog_path/FATAL_");

	//在日志文件名中级别后添加一个扩展名。适用于所有严重级别
	google::SetLogFilenameExtension(".log");  

	//大于指定级别的日志都输出到标准输出
	google::SetStderrLogging(google::GLOG_INFO);      

	//实时输出日志
	FLAGS_logbufsecs = 0;

	//最大日志大小(MB)
	FLAGS_max_log_size = 100;

	FLAGS_colorlogtostderr = true;    //设置输出到屏幕的日志显示相应颜色

	int num_cookies = 11;
	int size = 123;

	//当条件满足时输出日志
	LOG_IF(INFO, num_cookies > 10) << "Got lots of cookies";  

	//google::COUNTER 记录该语句被执行次数,从1开始,在第一次运行输出日志之后,每隔 10 次再输出一次日志信息
	LOG_EVERY_N(INFO, 10) << "Got the " << google::COUNTER << "th cookie";  

	//上述两者的结合,不过要注意,是先每隔 10 次去判断条件是否满足,如果滞则输出日志;而不是当满足某条件的情况下,每隔 10 次输出一次日志信息
	LOG_IF_EVERY_N(INFO, (size > 1024), 10) << "Got the " << google::COUNTER << "th big cookie";  

	//当此语句执行的前 20 次都输出日志,然后不再输出
	LOG_FIRST_N(INFO, 20) << "Got the " << google::COUNTER << "th cookie";  

	LOG(WARNING) << "WARNING 01";

	LOG(ERROR) << "err 02";
	LOG(ERROR) << "err 03";
	
    return 0;
}

相比log4cplus, glog目测更好。在项目中应用时,需要自己封装类进行使用。

猜你喜欢

转载自blog.csdn.net/yao_hou/article/details/125044275