C++開源庫(一) ----log4cpp詳解


  我們在寫程序的時候通常會希望將一些信息記錄下來,方便我們進行日后的一些信息跟蹤,錯誤排查等等。比如:我們在進行數據庫操作的時候,我們通常希望知道現在是程序的哪一部分進行了數據庫的操作,所以我們會記錄下threadid + sql這樣的日志。但是通常我們都不情願自己進行log的封裝,這個時候我們就會想到使用第三方的庫,今天我們就說一下c++中的第三方庫----log4cpp,寫過java程序的同學們都長都會使用log4j這樣一個日志系統,其實log4cpp可以說是log4j對c++的一個擴展。

  下面我們就學習一下log4cpp,首先說一下log4cpp的幾個大的組件,layouts,appenders,categories三大組件,大致的過程是這樣的,layouts負責進行日志輸出格式的限制,appenders負責進行數據輸出位置的限制,categories負責進行真正的日志處理,至於他們的詳細功能我們稍后會逐一詳細敘述。

  1.   layouts: 負責進行輸出日志格式的限制,其中包含四個主要的類: Layout,BasicLayout,PatternLayout,SimpleLayout四個類,這四個類的UML圖如下:Layout是一個頂層的抽象類,其他類都繼承子這個類。
    • SimpleLayout: 以“優先級(priority) - 日志信息”格式顯示,由於顯示的信息過於簡單,所以通常都不願意使用這個模式。 
    • BasicLayout: 以“時間戳+優先級+categoriesName+“:”+Info來表示日志的相關信息。
    • PatternLayout:可以使用類似於c語言的模式進行相關的參數設置,具體如下:
      • %c: 指的是categories的name
      • %d:指的是時間,但是可以具體制定時間的格式,制定的模式例如這樣: %d{%H:%M:%S,%l} 
      • %m: 指的是日志的消息
      • %n: 指的是換行符,會根據平台的不同,使用不同的格式,對用戶透明
      • %p: 優先級等等
      • 具體情況可以參見log4cpp
      • 設置的函數是Layout.setConversionPattern()

  2.  Appender: 我們設置的layout只是相當於設置了日志的模式,但是我們要將使用制定模式的日志打印到什么地方,那就需要用到Appender,下面我們簡單的介紹一下Appender的幾種類型:

      • FileAppender: 用於將日志輸出到文件中      

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM