青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

牽著老婆滿街逛

嚴以律己,寬以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

開源日志系統log4cplus(三)

本文介紹了三種控制輸出格式的布局管理器的概念和使用情況,通過掌握這些知識,可以更有效地控制log系統輸出盡可能貼近你需求的信息來。

				
### 如何控制輸出消息的格式 ###
前面已經講過,log4cplus通過布局器(Layouts)來控制輸出的格式,log4cplus提供了三種類型的Layouts,
分別是SimpleLayout、PatternLayout、和TTCCLayout。其中:
1. SimpleLayout
是一種簡單格式的布局器,在輸出的原始信息之前加上LogLevel和一個"-"。
比如以下代碼片段:
??? ... ...
??? /* step 1: Instantiate an appender object */
??? SharedObjectPtr _append (new ConsoleAppender());
??? _append->setName("append for test");
??? /* step 2: Instantiate a layout object */
??? std::auto_ptr? _layout(new log4cplus::SimpleLayout());
??? /* step 3: Attach the layout object to the appender */
??? _append->setLayout( _layout );
??? /* step 4: Instantiate a logger object */
??? Logger _logger = Logger::getInstance("test");
??? /* step 5: Attach the appender object to the logger? */
??? _logger.addAppender(_append);
???? /* log activity */
??? LOG4CPLUS_DEBUG(_logger, "This is the simple formatted log message...")
???
??? ... ...
???
???
將打印結果:
DEBUG - This is the simple formatted log message...
2. PatternLayout
是一種有詞法分析功能的模式布局器,一提起模式就會想起正則表達式,這里的模式和正則表達式類似,但是
遠比后者簡單,能夠對預定義的標識符(稱為conversion specifiers)進行解析,轉換成特定格式輸出。以下
代碼片段演示了如何使用PatternLayout:
??? ... ...
??? /* step 1: Instantiate an appender object */
??? SharedObjectPtr _append (new ConsoleAppender());
??? _append->setName("append for test");
??
??? /* step 2: Instantiate a layout object */
??? std::string pattern = "%d{%m/%d/%y %H:%M:%S}? - %m [%l]%n";
??? std::auto_ptr _layout(new PatternLayout(pattern));
???
??? /* step 3: Attach the layout object to the appender */
??? _append->setLayout( _layout );
??? /* step 4: Instantiate a logger object */
??? Logger _logger = Logger::getInstance("test_logger.subtest");
??? /* step 5: Attach the appender object to the logger? */
??? _logger.addAppender(_append);
???? /* log activity */
??? LOG4CPLUS_DEBUG(_logger, "teststr")
???
??? ... ...
???
輸出結果:
10/16/04 18:51:25? - teststr [main.cpp:51]
可以看出通過填寫特定格式的模式字符串"pattern",原始信息被包含到一堆有格式的信息當中了,這就使得
用戶可以根據自身需要來定制顯示內容。"pattern"可以包含普通字符串和預定義的標識符,其中:
(1)普通字符串,能夠被直接顯示的信息。
(2)預定義標識符,通過"%"與一個或多個字符共同構成預定義的標識符,能夠產生出特定格式信息。
關于預定義標識符,log4cplus文檔中提供了詳細的格式說明,我每種都試了一下,以上述代碼為例,根據不同
的pattern,各種消息格式使用情況列舉如下:
(1)"%%",轉義為%, 即,std::string pattern = "%%" 時輸出: "%"
(2)"%c",輸出logger名稱,比如std::string pattern ="%c" 時輸出: "test_logger.subtest",
???? 也可以控制logger名稱的顯示層次,比如"%c{1}"時輸出"test_logger",其中數字表示層次。
(3)"%D",顯示本地時間,當std::string pattern ="%D" 時輸出:"2004-10-16 18:55:45",%d顯示標準時間,
???? 所以當std::string pattern ="%d" 時輸出 "2004-10-16 10:55:45" (因為我們是東8區,差8個小時啊)。
???? 可以通過%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",輸出當前記錄器所在的文件名稱,比如std::string pattern ="%F" 時輸出: "main.cpp"
(5)"%L",輸出當前記錄器所在的文件行號,比如std::string pattern ="%L" 時輸出: "51"
(6)"%l",輸出當前記錄器所在的文件名稱和行號,比如std::string pattern ="%L" 時輸出:
???? "main.cpp:51"
(7)"%m",輸出原始信息,比如std::string pattern ="%m" 時輸出: "teststr",即上述代碼中
???? LOG4CPLUS_DEBUG的第二個參數,這種實現機制可以確保原始信息被嵌入到帶格式的信息中。
(8)"%n",換行符,沒什么好解釋的
(9)"%p",輸出LogLevel,比如std::string pattern ="%p" 時輸出: "DEBUG"
(10)"%t",輸出記錄器所在的線程ID,比如std::string pattern ="%t" 時輸出: "1075298944"
(11)"%x",嵌套診斷上下文NDC (nested diagnostic context) 輸出,從堆棧中彈出上下文信息,NDC可以用對
????? 不同源的log信息(同時地)交叉輸出進行區分,關于NDC方面的詳細介紹會在下文中提到。
(12)格式對齊,比如std::string pattern ="%-10m"時表示左對齊,寬度是10,此時會輸出"teststr?? ",當
????? 然其它的控制字符也可以相同的方式來使用,比如"%-12d","%-5p"等等(剛接觸log4cplus文檔時還以為
????? "%-5p"整個字符串代表LogLevel呢,呵呵)。
????? 
3. TTCCLayout
是在PatternLayout基礎上發展的一種缺省的帶格式輸出的布局器, 其格式由時間,線程ID,Logger和NDC 組
成(consists of time, thread, Logger and nested diagnostic context information, hence the name),
因而得名(怎么得名的?Logger里哪里有那個"C"的縮寫啊!名字起得真夠爛的,想扁人)。提供給那些想顯示
典型的信息(一般情況下夠用了)又懶得配置pattern的同志們。
TTCCLayout在構造時有機會選擇顯示本地時間或GMT時間,缺省是按照本地時間顯示:
TTCCLayout::TTCCLayout(bool use_gmtime? = false)
以下代碼片段演示了如何使用TTCCLayout:
??? ... ...
??? /* step 1: Instantiate an appender object */
??? SharedObjectPtr _append (new ConsoleAppender());
??? _append->setName("append for test");
??? /* step 2: Instantiate a layout object */
??? std::auto_ptr _layout(new TTCCLayout());
??? /* step 3: Attach the layout object to the appender */
??? _append->setLayout( _layout );
??? /* step 4: Instantiate a logger object */
??? Logger _logger = Logger::getInstance("test_logger");
??? /* step 5: Attach the appender object to the logger? */
??? _logger.addAppender(_append);
???? /* log activity */
??? LOG4CPLUS_DEBUG(_logger, "teststr")
???
??? ... ...
???
輸出結果:
10-16-04 19:08:27,501 [1075298944] DEBUG test_logger <> - teststr
				
當構造TTCCLayout對象時選擇GMT時間格式時:
??? ... ...
???
??? /* step 2: Instantiate a layout object */
??? std::auto_ptr _layout(new TTCCLayout(true));
???
??? ... ...
???
輸出結果:
10-16-04 11:12:47,678 [1075298944] DEBUG test_logger <> - teststr
				
本文介紹了控制log信息格式的相關知識,下一部分將詳細介紹log信息的幾種文件操作方式。

posted on 2006-08-26 04:49 楊粼波 閱讀(5100) 評論(1)  編輯 收藏 引用 所屬分類: Windows編程Linux編程

評論

# re: 開源日志系統log4cplus(三) 2013-11-21 18:02 wooduuuu

多謝多謝,非常有用!  回復  更多評論   

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            中文亚洲欧美| 亚洲成人资源网| 国产精品专区一| 欧美日韩一区二区三区在线| 久久综合一区二区三区| 久久久五月婷婷| 久久天堂精品| 欧美不卡高清| 欧美欧美午夜aⅴ在线观看| 欧美激情视频在线播放| 欧美性大战久久久久久久蜜臀| 欧美精品一二三| 国产精品jvid在线观看蜜臀| 国产伦精品一区二区三区视频孕妇 | 免费观看亚洲视频大全| 欧美成人免费网站| 欧美午夜精品理论片a级大开眼界| 国产精品五月天| 尤物yw午夜国产精品视频明星| 亚洲国产三级网| 亚洲国产精品成人va在线观看| 亚洲久久一区二区| 欧美在线|欧美| 亚洲福利av| 性xx色xx综合久久久xx| 久久影院午夜论| 久久精品国产亚洲a| 国产亚洲一级高清| 亚洲精品在线免费观看视频| 午夜精品久久久久影视| 欧美激情在线播放| 亚洲欧美一区二区三区久久| 欧美成在线观看| 国产亚洲一区二区精品| 亚洲色图在线视频| 欧美国产极速在线| 亚洲欧美日韩精品久久久| 欧美1区2区| 精品999在线播放| 午夜亚洲性色福利视频| 亚洲国产美女| 午夜精品视频一区| 国产精品观看| 日韩亚洲欧美成人一区| 免费成人毛片| 欧美一区二区三区免费看 | 欧美日韩在线播| 亚洲电影在线免费观看| 久久精品视频在线播放| 亚洲私人影院| 欧美视频一区二区三区| 亚洲三级视频在线观看| 欧美大学生性色视频| 欧美一区二区观看视频| 国产精品婷婷| 久久gogo国模裸体人体| 亚洲午夜在线视频| 国产精品日本精品| 亚洲欧美三级在线| 日韩视频一区二区| 欧美日韩播放| 一区二区三区欧美亚洲| 91久久线看在观草草青青| 欧美成人午夜激情视频| 亚洲精品免费在线| 亚洲国产一区在线| 欧美日韩大陆在线| 亚洲一级一区| 亚洲影院一区| 韩日精品视频| 亚洲大片av| 欧美日韩精品不卡| 午夜视频久久久| 欧美一区二区精品| 怡红院精品视频在线观看极品| 美国十次成人| 欧美精品尤物在线| 先锋亚洲精品| 久久久久91| 夜夜嗨av一区二区三区| 一区二区三区精密机械公司 | 亚洲美女在线观看| 国产精品视频成人| 一区二区av在线| 亚洲午夜极品| 午夜精品久久久久久久久久久| 国产尤物精品| 亚洲国产精品悠悠久久琪琪| 欧美色欧美亚洲另类七区| 欧美一区二区三区视频免费| 久久九九热免费视频| 日韩午夜视频在线观看| 亚洲影视九九影院在线观看| 在线观看成人网| 亚洲最新视频在线| 经典三级久久| 一本久久综合| 亚洲电影在线免费观看| 亚洲视频二区| 亚洲电影免费观看高清完整版在线观看| 亚洲国产你懂的| 国产色爱av资源综合区| 亚洲激情欧美激情| 国产在线日韩| 在线一区欧美| 亚洲国产合集| 亚洲欧美色一区| 亚洲四色影视在线观看| 久久久久久色| 午夜精品电影| 欧美激情一区二区三区成人| 久久se精品一区二区| 欧美日韩人人澡狠狠躁视频| 蜜桃久久精品乱码一区二区| 国产精品都在这里| 亚洲欧洲日本mm| 影院欧美亚洲| 香蕉乱码成人久久天堂爱免费 | 亚洲美女黄网| 久久在线免费视频| 久久国产精品网站| 国产精品成人播放| 亚洲人成欧美中文字幕| 在线观看91精品国产麻豆| 欧美亚洲日本网站| 亚洲欧美色婷婷| 欧美亚洲不卡| 一区二区黄色| 亚洲一区二区精品视频| 欧美精品在线视频| 亚洲春色另类小说| 亚洲国产欧美一区二区三区久久 | 国产精品理论片| 99v久久综合狠狠综合久久| 亚洲免费播放| 欧美片第一页| 亚洲巨乳在线| 亚洲视频在线看| 欧美日韩亚洲一区二| 欧美日韩国产页| 亚洲最新色图| 欧美成人一区二区三区在线观看| 久久久精品国产一区二区三区 | 久久激情网站| 国产欧美日韩三区| 午夜视频一区| 久久精品综合| 亚洲国产另类久久精品| 欧美xart系列在线观看| 91久久中文字幕| 亚洲午夜av| 国产目拍亚洲精品99久久精品 | 亚洲高清资源综合久久精品| 麻豆91精品91久久久的内涵| 欧美成人一品| 夜夜夜久久久| 国产精品一二三视频| 欧美在线资源| 欧美多人爱爱视频网站| 宅男噜噜噜66一区二区66| 国产精品人成在线观看免费| 欧美亚洲在线播放| 欧美国产第一页| 亚洲中字在线| 黑人极品videos精品欧美裸| 欧美黄色大片网站| 亚洲一区在线视频| 美日韩精品视频| 一区二区三区视频免费在线观看| 国产精品色婷婷| 老司机久久99久久精品播放免费| 99精品99久久久久久宅男| 久久久久久999| 一区二区高清| 一区二区三区在线视频免费观看 | 欧美日本精品| 久久精品国产99| 99国产欧美久久久精品| 久久久久88色偷偷免费| 亚洲激情第一页| 国产精品自拍网站| 欧美国产成人在线| 久久国产精品免费一区| 一本到12不卡视频在线dvd| 免费日本视频一区| 午夜久久影院| 夜夜嗨av一区二区三区中文字幕 | 久久久欧美一区二区| 99精品国产在热久久| 国产一区二区成人| 欧美日韩一级片在线观看| 久久在线免费观看| 篠田优中文在线播放第一区| 99re在线精品| 欧美激情按摩| 麻豆国产精品va在线观看不卡| 理论片一区二区在线| 亚洲一区在线观看免费观看电影高清| 国产毛片久久| 国产精品久久久久久久久婷婷|