中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

關于windows下glog日志庫使用

發布時間:2020-06-29 15:04:05 來源:網絡 閱讀:2022 作者:一杯開心茶 欄目:編程語言

glog日志庫,是谷歌開源的日志庫。

由于前兩天發生了一次生產事故,一個C++程序的日志里面記錄了很多亂碼以及其他模塊中的數據,初步懷疑是內存管理異常造成的,最大的疑慮在于日志記錄模塊的多線程支持,原先的模塊在單線程下沒有任何問題,但是多線程下并沒有經過穩定的壓力測試,為了一了百了地解決,還是選用技術實例強勁的開源庫吧,原先的庫就留著開發測試小功能里面用用。

glog庫,可以從github上下載。 https://github.com/google/glog

我的開發環境是windows10+vs2017,所以下載完成之后,解壓縮,然后使用cmake-gui進行轉換為vs2017的sln工程文件:

  1. 選擇源代碼為glog的目錄,目標位置為glog目錄下新建一個build-cmake,
  2. 在configure按鈕點擊,彈出窗口選擇vs2017(這個都是默認會檢測到電腦上的vs版本,如果要轉換為64位的,則選擇帶有win64的,默認是32位,默認生成靜態庫)
  3. 點擊generate,然后到build-cmake目錄下就會生成vs2017的工程文件glog.sln,雙擊打開工程,分別在debug和release下編譯,生成glogd.lib和glog.lib,這里我使用靜態庫。

現在glog的庫文件已經有了,我同時編譯了32位和64位兩個版本。以及debug版本和release版本。

然后新建一個測試工程,我選用的是64位的工程,

  1. 添加glogd.lib和glog.lib以及build-cmake/glog下面的頭文件到工程中去,添加glogd.lib和glog.lib,添加src/glog/log_severity.h。所有的添加操作都是拷貝。
  2. 在工程屬性中,文件引入目錄包含以上添加的文件目錄,庫引用目錄也是如此。同時注意工程屬性中C/C++->代碼生成->運行庫的參數,我選擇的都是 “/MTd”,編譯glog庫工程和測試工程的這個選擇要一致。
  3. 創建測試代碼,需要在開頭加上 GLOG_NO_ABBREVIATED_SEVERITIES和GOOGLE_GLOG_DLL_DECL,不然會報錯。
  4. 然后就可以使用啦,可以參考如下我的測試代碼,使用了兩個線程同時寫入,方便測試是否線程安全。可以參考我的github,
    #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();
    }
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

大邑县| 永定县| 巫溪县| 南阳市| 全州县| 建昌县| 望都县| 武功县| 龙海市| 武威市| 新建县| 电白县| 宣武区| 寿宁县| 桃江县| 琼结县| 唐山市| 西平县| 阿坝县| 蓝田县| 临城县| 古交市| 兰西县| 原平市| 广河县| 阳朔县| 东乌珠穆沁旗| 德保县| 郁南县| 石台县| 涿州市| 正安县| 法库县| 荣昌县| 灵璧县| 宾川县| 嘉荫县| 合江县| 南和县| 玉环县| 深圳市|