您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
glog日志库,是谷歌开源的日志库。
由于前两天发生了一次生产事故,一个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();
}
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。