日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++日志系统log4cxx使用总结

發布時間:2025/3/21 c/c++ 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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.SimpleLayout(包含日志信息的級別和信息字符串),?

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{yyyy MMM dd

HH:mm:ss,SSS},輸出類似:2002年10月18日 22:10:28,921 %l 輸出日志事件的發生位置,包括類目名

、發生的線程,以及在代碼中的行數。

?

五、log4cxx Log appender種類介紹

?

Log4cXX提供的appender種類:

org.apache.log4j.ConsoleAppender 控制臺

org.apache.log4j.DailyRollingFileAppender?每天產生一個日志文件

org.apache.log4j.FileAppender 文件org.apache.log4j.RollingFileAppender 文件大小達到指定尺寸的

時候產生一個新的文件

?

六、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屬性介紹

?

它是 子Logger 是否繼承 父Logger 的 輸出源(appender) 的標志位。具體說,默認情況下子Logger會繼承父Logger的appender,也就是說子Logger會在父Logger的appender里輸?出。若是additivity設為false,則子Logger只會在自己的appender里輸出,而不會在父Logger的appender里輸?出。

?

?

八、log4cxx中XML文件范例

?請參考:http://blog.sina.com.cn/s/blog_a459dcf501013vh1.html

?

?

九、log4cxx編譯

??請參考:http://blog.sina.com.cn/s/blog_a459dcf501013tbn.html

?http://blog.sina.com.cn/s/blog_a459dcf501013mr1.html

總結

以上是生活随笔為你收集整理的C++日志系统log4cxx使用总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。