(轉)在Linux上的使用開源C++日志庫 ---log4cplus


下載地址:  log4cplus:http://sourceforge.net/projects/log4cplus/

非常棒的中文文檔:
(可直接去人家的分類里有列表:http://www.cppblog.com/tx7do/category/1516.html
開源日志系統log4cplus(一)

開源日志系統log4cplus(二)

開源日志系統log4cplus(三)

開源日志系統log4cplus(四)

開源日志系統log4cplus(五)

開源日志系統log4cplus(六)

開源日志系統log4cplus(七)   

如果上面的鏈接是正常的,下面的內容別不看了浪費時間


1.簡 介

    log4cplus是C++編寫的開源的日志系統,前身是java編寫的log4j系統.受Apache Software License保護。作者是Tad E. Smith。

    log4cplus具有線程安全、靈活、以及多粒度控制的特點,通過將信息划分優先級使其可以面向程序調試、運行、測試、和維護等全生命周期;你可以選擇將信息輸出到屏幕、文件、NT event log、甚至是遠程服務器;通過指定策略對日志進行定期備份等等。
 
2.下 載

最新的log4cplus可以從以下網址下載。
log4cplus:http://sourceforge.net/projects/log4cplus/

3.安 裝

#tar xvzf log4cplus-1.0.4-rc10.tar.gz
#cd log4cplus-1.0.4-rc10
#./configure --prefix=/usr/local
#make
#make install
安裝成功會在/usr/local/lib下看到 liblog4cplus.a,在/usr/local/include下有個liblog4cplus文件夾

4.配 置

確保你的Makefile中包含 /usr/local/lib/liblog4cplus.a(靜態庫)或-llog4cplus(動態庫)即可。

頭文件在/usr /local/include/log4cplus目錄下。

對於動態庫,要想正常使用,還得將庫安裝路徑加入到 LD_LIBRARY_PATH 中,以管理員身份登錄,在/etc/ld.so.conf中加入安裝路徑,這里是/usr/local/lib,然后執行 ldconfig使設置生效即可。

 

5.運行測試程序
直接運行源碼包中tests目錄下的測試程序

 

6.log4cp lus內容介紹
1.log4cplus基本元素
    Layouts       :控制輸出消息的格式。
    Appenders  :輸出位置。
    Logger        :日志對象。
    Priorities      :優先權,包括TRACE, DEBUG, INFO, WARNING, ERROR, FATAL。


2.log4cplus基本結構

3. 使用步驟:
    a.) 生成Appender對象。
    b.) 生成Layout對象,並綁定到Appender。(可選)
    c.) 生成Logger對象。
    d.) 設置Logger優先級。(可選)
    e.) 將需要關聯Logger的Appender添加到Logger上。
    f.) 使用Logger輸出信息,所有大於設定的優先級的信息,並在所有掛接在該Logger對象上的Appender上以相應的Layout設定的格式顯示出來。
 
4. Logger對象
Logger對象具有層次結構,按名稱區分,如下代碼:   
Logger test = Logger::getInstance("test"); 
Logger subtest = Logger::getInstance("test.subtest");
    對象subtest是test的子對象。
 
5. 優先級
    log4cplus優先級有低到高:
    NOT_SET_LOG_LEVEL :接受缺省的LogLevel,如果有父logger則繼承它的LogLevel
    ALL_LOG_LEVEL :開放所有log信息輸出
    TRACE_LOG_LEVEL :開放trace信息輸出(即ALL_LOG_LEVEL)
    DEBUG_LOG_LEVEL :開放debug信息輸出
    INFO_LOG_LEVEL  :開放info信息輸出
    WARN_LOG_LEVEL  :開放warning信息輸出
    ERROR_LOG_LEVEL :開放error信息輸出
    FATAL_LOG_LEVEL :開放fatal信息輸出
    OFF_LOG_LEVEL :關閉所有log信息輸出
 
    各個logger可以通過setLogLevel設置自己的優先級,當某個logger的LogLevel設置成NOT_SET_LOG_LEVEL時,該logger會繼承父logger的優先級,另外,如果定義了重名的多個logger, 對其中任何一個的修改都會同時改變其它logger。
 
6.Layout格式輸出
1.) SimpleLayout
    是一種簡單格式的布局器,在輸出的原始信息之前加上LogLevel和一個"-"。
 
2.) TTCCLayout
    其格式由時間,線程ID,Logger和NDC 組成。
 
3.) PatternLayout
    是一種有詞法分析功能的模式布局器,類似正則表達式。以“%”作為開頭的特殊預定義標識符,將產生特殊的格式信息。
 
(1)"%%",轉義為% 。
(2)"%c",輸出logger名稱,如test.subtest 。也可以控制logger名稱的顯示層次,比如"%c{1}"時輸出"test",其中數字表示層次。
(3)"%D",顯示本地時間,比如:"2004-10-16 18:55:45",%d顯示標准時間。     可以通過%d{...}定義更詳細的顯示格式,比如%d{%H:%M:%s}表示要顯示小時:分鍾:秒。大括號中可顯示的
     預定義標識符如下:
     
   %a -- 表示禮拜幾,英文縮寫形式,比如"Fri"
   %A -- 表示禮拜幾,比如"Friday"
   %b -- 表示幾月份,英文縮寫形式,比如"Oct"
   %B -- 表示幾月份,"October"
   %c -- 標准的日期+時間格式,如 "Sat Oct 16 18:56:19 2004"
   %d -- 表示今天是這個月的幾號(1-31)"16"
   %H -- 表示當前時刻是幾時(0-23),如 "18"
   %I -- 表示當前時刻是幾時(1-12),如 "6"
   %j -- 表示今天是哪一天(1-366),如 "290"
   %m -- 表示本月是哪一月(1-12),如 "10"
   %M -- 表示當前時刻是哪一分鍾(0-59),如 "59"
   %p -- 表示現在是上午還是下午, AM or PM
   %q -- 表示當前時刻中毫秒部分(0-999),如 "237"
   %Q -- 表示當前時刻中帶小數的毫秒部分(0-999.999),如 "430.732"
   %S -- 表示當前時刻的多少秒(0-59),如 "32"
   %U -- 表示本周是今年的第幾個禮拜,以周日為第一天開始計算(0-53),如 "41"
   %w -- 表示禮拜幾,(0-6, 禮拜天為0),如 "6"
   %W -- 表示本周是今年的第幾個禮拜,以周一為第一天開始計算(0-53),如 "41"
   %x -- 標准的日期格式,如 "10/16/04"
   %   X -- 標准的時間格式,如 "19:02:34"
   %y -- 兩位數的年份(0-99),如 "04"
   %Y -- 四位數的年份,如 "2004"
   %Z -- 時區名,比如 "GMT"
 
(4)"%F",輸出當前記錄器所在的文件名稱,比如"main.cpp"
(5)"%L",輸出當前記錄器所在的文件行號,比如"51"
(6)"%l",輸出當前記錄器所在的文件名稱和行號,比如"main.cpp:51"
(7)"%m",輸出原始信息。
(8)"%n", 換行符。
(9)"%p",輸出LogLevel,比如"DEBUG"
(10)"%t",輸出記錄器所在的線程ID,比如 "1075298944"
(11)"%x",嵌套診斷上下文NDC (nested diagnostic context) 輸出,從堆棧中彈出上下文信息,NDC可以用對不同源的log信息(同時地)交叉輸出進行區分。
(12)格式對齊,比如"%-10m"時表示左對齊,寬度是10,當然其它的控制字符也可以相同的方式來使用,比如"%-12d","%-5p"等等。
 
7.) Appender輸出位置
(1)控制台輸出
        ConsoleAppender
(2)文件輸出
        FileAppender / RollingFileAppender / DailyRollingFileAppender .
 
FileAppender :
    實現了基本的文件操作功能,構造函數如下:
    FileAppender(filename,mode,immediateFlush);
 
<filename > 文件名
<mode> 文件類型,可選擇的文件類型包括app,ate,binary,in,out,trunc。缺省是trunc,表示將先前文件刪除。
<immediateFlush> 緩沖刷新標志.
 
RollingFileAppender:
RollingFileAppender(filename,maxFileSize,maxBackupIndex,immediateFlush)
filename       : 文件名
maxFileSize    : 文件的最大尺寸
maxBackupIndex : 最大記錄文件數
immediateFlush : 緩沖刷新標志
可以根據你預先設定的大小來決定是否轉儲,當超過該大小,后續log信息會另存到新文件中,除了定義每個記錄文件的大小之外,你還要確定在 RollingFileAppender類對象構造時最多需要多少個這樣的記錄文件(maxBackupIndex+1),當存儲的文件數目超過 maxBackupIndex+1時,會刪除最早生成的文件,保證整個文件數目等於maxBackupIndex+1 。
 
DailyRollingFileAppender:
DailyRollingFileAppender(filename, schedule,immediateFlush,  maxBackupIndex)

filename       : 文件名
schedule       : 存儲頻度
immediateFlush : 緩沖刷新標志
maxBackupIndex : 最大記錄文件數
 

DailyRollingFileAppender類可以根據你預先設定的頻度來決定是否轉儲,當超過該頻度,后續log信息會另存到新文件中,這里的頻度包

 

轉載來源:http://myswirl.blog.163.com/blog/static /51318642201071644948257/

 

添加:

log4cplus是一款優秀的基於C/C++的開源日志庫。log4cplus具有線程安全,不用但心在多線程狀態下寫日志問題;使用靈活,可通過配置文件設置日志級別下輸出位置,還可以在程序運行時動態設置日志輸出級別,隨心所欲掌控日志的輸出;以及多粒度控制的特點。通過將信息划分優先級使其可以面向程序調試、運行、測試、和維護等全生命周期; 可以選擇將信息輸出到屏幕、文件、NT event log、甚至是遠程服務器;通過指定策略對日志進行定期備份。可以滿足大部分開發者對日志系統需求,功能全面。
下載地址:http://sourceforge.net/projects/log4cplus/files/log4cplus-stable/
tar -xjf log4cplus-1.0.4.tar.bz2(解壓縮),切換到解壓縮路徑下
安裝:./configure;make;make install
這里已經安裝成功,默認的路徑lib庫路徑是/usr/local/lib/,頭文件的位置:/usr/local/include/log4cplus
將/usr/local/lib下的和log4cplus相關的庫都拷貝到/usr/lib,將頭文件加到/etc/profile下的CPLUS_INCLUDE_PATH

這里要強調是使用log4cplus時,要 加上-llog4cplus -lrt -lpthread -lrt(或者 -llog4cplus -lpthread ),才能順利的編譯通過和使用;


轉載自: http://blog.csdn.net/astraylinux/article/details/7258835

 


免責聲明!

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



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