glog日志库,是谷歌开源的日志库。
创新互联是专业的东至网站建设公司,东至接单;提供成都做网站、成都网站设计,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行东至网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
由于前两天发生了一次生产事故,一个C++程序的日志里面记录了很多乱码以及其他模块中的数据,初步怀疑是内存管理异常造成的,最大的疑虑在于日志记录模块的多线程支持,原先的模块在单线程下没有任何问题,但是多线程下并没有经过稳定的压力测试,为了一了百了地解决,还是选用技术实例强劲的开源库吧,原先的库就留着开发测试小功能里面用用。
glog库,可以从github上下载。 https://github.com/google/glog
我的开发环境是windows10+vs2017,所以下载完成之后,解压缩,然后使用cmake-gui进行转换为vs2017的sln工程文件:
现在glog的库文件已经有了,我同时编译了32位和64位两个版本。以及debug版本和release版本。
然后新建一个测试工程,我选用的是64位的工程,
#pragma once
#define GLOG_NO_ABBREVIATED_SEVERITIES
#define GOOGLE_GLOG_DLL_DECL
#include "logging.h"
using namespace google;
#ifdef _DEBUG
#pragma comment(lib, "glogd.lib")
#else
#pragma comment(lib, "glog.lib")
#endif // DEBUG
void testGlog2()
{
char str[20] = "hello log!";
int i = 100000;
while (i > 0) {
// LOG(INFO) << str;
LOG(INFO) << "2info 2test" << "2hello 2log!"; //输出一个Info日志
// LOG(WARNING) << "warning test"; //输出一个Warning日志
// LOG(ERROR) << "error test"; //输出一个Error日志
i--;
}
}
void testGlog()
{
// Start google log system:
FLAGS_log_dir = "E:\\logs";
google::InitGoogleLogging("loglog");
google::SetLogDestination(google::GLOG_INFO, "E:\\logs\\INFO_");
google::SetStderrLogging(google::GLOG_FATAL);
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
thread *t = new thread(testGlog2);
char str[20] = "hello log!";
int i = 100000;
while (i > 0) {
// LOG(INFO) << str;
LOG(INFO) << "info test" << "hello log!"; //输出一个Info日志
// LOG(WARNING) << "warning test"; //输出一个Warning日志
// LOG(ERROR) << "error test"; //输出一个Error日志
i--;
}
t->join();
google::ShutdownGoogleLogging();
}