您好,登錄后才能下訂單哦!
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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。