Google-glog 日誌庫使用手記

来源:http://www.cnblogs.com/hiloves/archive/2016/10/28/6009707.html
-Advertisement-
Play Games

Google Glog 是一個C++語言的應用級日誌記錄框架,提供了 C++ 風格的流操作和各種助手巨集。試用了一下,感覺不錯,試用過程出了不少插曲。 1、開源項目首頁已經從https://code.google.com/p/google-glog/遷移到https://github.com/goog ...


Google Glog 是一個C++語言的應用級日誌記錄框架,提供了 C++ 風格的流操作和各種助手巨集。試用了一下,感覺不錯,試用過程出了不少插曲。

1、開源項目首頁已經從https://code.google.com/p/google-glog/遷移到https://github.com/google/glog。當前主版本是0.3.4。

2、下載代碼後,雙擊根目錄下的google-glog.sln,Visual Studio 2015提示先進行遷移,成功後就可以編譯了。

3、在解決方案下有四個工程:libglog(是動態鏈接庫工程,生成libglog.dll和libglog.lib),libglog_static(是靜態庫工程,生成libglog_static.lib,運行時不需要libglog.dll),logging_unittest和logging_unittest_static是相應的測試工程。

4、不需要更改工程屬性。平臺工具集是否是Windows XP(v140_xp)好像並不影響。Glog不支持Unicode寬字元集,工程屬性字元集保持多位元組字元集。“C/C++”-“代碼生成”中的“運行庫”,libglog動態庫工程必須選擇“多線程DLL”或“多線程調試DLL”,libglog_static靜態庫工程必須選擇“多線程”或“多線程調試”。

5、按需要編譯庫。以靜態庫為例,動態庫多一步將libglog.dll拷貝到程式目錄下。分別編譯Debug和Release,將Debug版的重命名為libglog_static_d.lib。將編譯的lib文件拷貝到根目錄\src\glog下,\src\glog是頭文件目錄。這個版本的靜態庫在試用時並未發現有記憶體泄露問題。

6、將\glog目錄(包括了頭文件和庫文件)拷貝到自己的工程目錄下。也可以新建另外的庫目錄,也可以在工程屬性的附加目錄中增加相應目錄,這裡採用在代碼文件中控制。在工程資源管理器中添加glog頭文件,如果先添加glog目錄再添加頭文件會提示glog頭文件中的#include路徑出錯,手動刪除路徑中的“glog\”可解決。

7、在需要的地方#include "glog/logging.h"。建議添加到stdafx.h中。 

8、使用靜態庫必須添加#define GOOGLE_GLOG_DLL_DECL。動態庫不必添加。

9、因windows.h中定義的巨集ERROR,與glog中定義的巨集ERROR衝突,所以如果#include <windows.h>後要添加#define GLOG_NO_ABBREVIATED_SEVERITIES,並且代碼中要用google::GLOG_ERROR來代替原來的google::ERROR,相應的其他也改為:GLOG_INFO、GLOG_WARNING、GLOG_FATAL。

10、添加庫文件:#pragma comment(lib,"glog/libglog_static.lib")。針對Debug和Release版,用#ifdef控制。

1 #define GOOGLE_GLOG_DLL_DECL
2 #define GLOG_NO_ABBREVIATED_SEVERITIES
3 #include "glog/logging.h"
4 
5 #ifdef DEBUG
6     #pragma comment(lib,"glog/libglog_static_d.lib")
7 #else
8     #pragma comment(lib,"glog/libglog_static.lib")
9 #endif // DEBUG


11、自己的工程使用靜態庫時,必須選擇“多線程”或“多線程調試”。使用動態庫則選擇“多線程DLL”或“多線程調試DLL”。

12、未完繼續…


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 學習Java的同學註意了!!! 學習過程中遇到什麼問題或者想獲取學習資源的話,歡迎加入Java學習交流群,群號碼:279558494 我們一起學Java! 一、基礎篇 1.1 JVM 1.1.1. Java記憶體模型,Java記憶體管理,Java堆和棧,垃圾回收 http://www.jcp.org/e ...
  • 1.參數註入1.1用#{0},#{1}的形式,0代表第一個參數,1代表第二個參數 public List<RecordVo> queryList(String workerId, Integer topNum); <select id="queryList" resultType="com.demo ...
  • Python 2.7.12 下載地址:https://www.python.org/downloads/release/python-2712/ 安裝路徑D:\Program Files\Python27 python環境安裝比較簡單,下載python語言環境中的windows版本的msi格式文件, ...
  • 英文文檔: hash(object)Return the hash value of the object (if it has one). Hash values are integers. They are used to quickly compare dictionary keys duri ...
  • 英文文檔: 2. 函數實際上是調用getattr(object,name)函數,通過是否拋出AttributeError來判斷是否含有屬性。 ...
  • 英文文檔: ...
  • 本文通過從無到有創建一個利用Go語言實現的非常簡單的HttpServer,來讓大家熟悉利用Go語言時的基本流程,工具和代碼的基本佈局,為學習Go語言時碰到的環境問題掃清障礙。 ...
  • 1. 設置軟體斷點,運行到目標位置啟動調試器 方法①:使用彙編指令(註:x64 c++不支持彙編) 方法②:編譯器提供的方法 方法③:使用windows API WerFault.exe進程(Windows Error Reporting)彈出ConsoleTest.exe已停止工作: 要想出現“調 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...