C 日誌系統log4cxx使用總結

2021-09-09 01:59:58 字數 2769 閱讀 5867

c++日誌系統log4cxx使用總結邵明

本文主要從log4cxx級別、layout、格式化、命名規則、filter幾個方面介紹。

一、log4cxx命名規則

logger由乙個string類的名字識別,logger的名字是大小寫敏感的,且名字之間具有繼承的關係,子名

有父名作為字首,用點號.分隔。如:x.y是x.y.z的父親。根logger (root logger)是所有logger的祖先,

它具有如下屬性:1) 它總是存在的;2) 它不可以通過名字獲得。

通過呼叫public static logger logger.getrootlogger()獲得root logger;通過呼叫public static

logger logger.getlogger(string name)或者public static logger logger.getlogger(class clazz)獲得

或者建立)乙個named logger。後者相當於呼叫logger.getlogger(clazz.getname())。

在某物件中,用該物件所屬的類為引數,呼叫logger.getlogger(class clazz)以獲得logger被認為是目前

所知的最理智的命名logger的方法。

二、log4cxx log level級別介紹

每個logger都被分配了乙個日誌級別 (log level),用來控制日誌資訊的輸出。未被分配level的

logger將繼承它最近的父logger的level。每條輸出到logger的日誌請求(logging request)也都有乙個

level,如果該request的level大於等於該logger的level,則該request將被處理(稱為enabled);否則該

request將被忽略。故可得知:1、logger的level越低,表示該logger越詳細 2、logging request的

level越高,表示該logging request越優先輸出 3、如果沒有設定日誌記錄器(logger)的級別,那麼它將

會繼承最近的祖先的級別。因此,如果在包com.foo.bar中建立乙個日誌記錄器(logger)並且沒有設定級

別,那它將會繼承在包com.foo中建立的日誌記錄器(logger)的級別。如果在com.foo中沒有建立日誌記錄

器(logger)的話,那麼在com.foo.bar中建立的日誌記錄器(logger)將繼承root 日誌記錄器(logger)

的級別,root日誌記錄器(logger)經常被例項化而可用,它的級別為debug。

level類中預定義了五個level,它們的大小關係如下:level.all < level.debug < level.info <

level.warn < level.error < level.fatal < level.off

三、log4cxx(log4j) log layout介紹

org.apache.log4j.htmllayout(以html**形式布局), 

org.apache.log4j.patternlayout(可以靈活地指定布局模式), 

org.apache.log4j.******layout(包含日誌資訊的級別和資訊字串), 

org.apache.log4j.ttcclayout(包含日誌產生的時間、執行緒、類別等等資訊)

四、log4cxx log 格式化資訊介紹

log4j採用類似c語言中的printf函式的列印格式格式化日誌資訊,列印引數如下: 

%m 輸出**中指定的訊息 

%p 輸出優先順序,即debug,info,warn,error,fatal 

%r 輸出自應用啟動到輸出該log資訊耗費的毫秒數

%c 輸出所屬的類目,通常就是所在類的全名

%t 輸出產生該日誌事件的執行緒名 

%n 輸出乙個回車換行符,windows平台為「rn」,unix平台為「n」

%d 輸出日誌時間點的日期或時間,預設格式為iso8601,也可以在其後指定格式,比如:%d,輸出類似:2023年10月18日 22:10:28,921 %l 輸出日誌事件的發生位置,包括類目名

、發生的執行緒,以及在**中的行數。

時候產生乙個新的檔案

六、log4cxx log filter介紹

包括選擇過濾器和設定過濾條件,可選擇的過濾器包括:loglevelmatchfilter、loglevelrangefilter、和

stringmatchfilter:

1、對loglevelmatchfilter來說,過濾條件包括logleveltomatch和acceptonmatch(true|false), 只有

當log資訊的loglevel值與logleveltomatch相同,且acceptonmatch為true時才會匹配。

2、對loglevelrangefilter來說,過濾條件包括loglevelmin、loglevelmax和acceptonmatch,只有當log信

息的loglevel在loglevelmin、loglevelmax之間同時acceptonmatch為true時才會匹配。

3、對stringmatchfilter來說,過濾條件包括stringtomatch和acceptonmatch,只有當log資訊的loglevel

值與stringtomatch對應的loglevel值與相同, 且acceptonmatch為true時會匹配。

七、log4cxx additivity屬性介紹

出。出。

八、log4cxx中xml檔案範例

請參考:

九、log4cxx編譯

請參考:

C 日誌系統log4cxx

直接使用yum安裝log4cxx.x86 64 庫檔案 log4cxx devel.x86 64 標頭檔案 yum install log4cxx.x86 64 庫檔案 yum install log4cxx devel.x86 64 標頭檔案 編譯安裝apr tar zxvf apr 1.5.2....

log4cxx日誌系統

本文主要從log4cxx級別 layout 格式化 命名規則 filter幾個方面介紹。一 log4cxx命名規則 logger由乙個string類的名字識別,logger的名字是大小寫敏感的,且名字之間具有繼承的關係,子名有父名作為字首,用點號.分隔。如 x.y是x.y.z的父親。根logger ...

C 日誌系統log4cxx使用總結

本文主要從log4cxx級別 layout 格式化 命名規則 filter幾個方面介紹。一 log4cxx命名規則 logger由乙個string類的名字識別,logger的名字是大小寫敏感的,且名字之間具有繼承的關係,子名有父名作為字首,用點號.分隔。如 x.y是x.y.z的父親。根logger ...