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

牽著老婆滿街逛

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

開源日志系統(tǒng)log4cplus(三)

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

				
### 如何控制輸出消息的格式 ###
前面已經(jīng)講過,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...")
???
??? ... ...
???
???
將打印結(jié)果:
DEBUG - This is the simple formatted log message...
2. PatternLayout
是一種有詞法分析功能的模式布局器,一提起模式就會想起正則表達式,這里的模式和正則表達式類似,但是
遠比后者簡單,能夠?qū)︻A定義的標識符(稱為conversion specifiers)進行解析,轉(zhuǎn)換成特定格式輸出。以下
代碼片段演示了如何使用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")
???
??? ... ...
???
輸出結(jié)果:
10/16/04 18:51:25? - teststr [main.cpp:51]
可以看出通過填寫特定格式的模式字符串"pattern",原始信息被包含到一堆有格式的信息當中了,這就使得
用戶可以根據(jù)自身需要來定制顯示內(nèi)容。"pattern"可以包含普通字符串和預定義的標識符,其中:
(1)普通字符串,能夠被直接顯示的信息。
(2)預定義標識符,通過"%"與一個或多個字符共同構(gòu)成預定義的標識符,能夠產(chǎn)生出特定格式信息。
關(guān)于預定義標識符,log4cplus文檔中提供了詳細的格式說明,我每種都試了一下,以上述代碼為例,根據(jù)不同
的pattern,各種消息格式使用情況列舉如下:
(1)"%%",轉(zhuǎn)義為%, 即,std::string pattern = "%%" 時輸出: "%"
(2)"%c",輸出logger名稱,比如std::string pattern ="%c" 時輸出: "test_logger.subtest",
???? 也可以控制logger名稱的顯示層次,比如"%c{1}"時輸出"test_logger",其中數(shù)字表示層次。
(3)"%D",顯示本地時間,當std::string pattern ="%D" 時輸出:"2004-10-16 18:55:45",%d顯示標準時間,
???? 所以當std::string pattern ="%d" 時輸出 "2004-10-16 10:55:45" (因為我們是東8區(qū),差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 -- 表示現(xiàn)在是上午還是下午, AM or PM
%q -- 表示當前時刻中毫秒部分(0-999),如 "237"
%Q -- 表示當前時刻中帶小數(shù)的毫秒部分(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 -- 兩位數(shù)的年份(0-99),如 "04"
%Y -- 四位數(shù)的年份,如 "2004"
%Z -- 時區(qū)名,比如 "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的第二個參數(shù),這種實現(xiàn)機制可以確保原始信息被嵌入到帶格式的信息中。
(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信息(同時地)交叉輸出進行區(qū)分,關(guān)于NDC方面的詳細介紹會在下文中提到。
(12)格式對齊,比如std::string pattern ="%-10m"時表示左對齊,寬度是10,此時會輸出"teststr?? ",當
????? 然其它的控制字符也可以相同的方式來使用,比如"%-12d","%-5p"等等(剛接觸log4cplus文檔時還以為
????? "%-5p"整個字符串代表LogLevel呢,呵呵)。
????? 
3. TTCCLayout
是在PatternLayout基礎上發(fā)展的一種缺省的帶格式輸出的布局器, 其格式由時間,線程ID,Logger和NDC 組
成(consists of time, thread, Logger and nested diagnostic context information, hence the name),
因而得名(怎么得名的?Logger里哪里有那個"C"的縮寫啊!名字起得真夠爛的,想扁人)。提供給那些想顯示
典型的信息(一般情況下夠用了)又懶得配置pattern的同志們。
TTCCLayout在構(gòu)造時有機會選擇顯示本地時間或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")
???
??? ... ...
???
輸出結(jié)果:
10-16-04 19:08:27,501 [1075298944] DEBUG test_logger <> - teststr
				
當構(gòu)造TTCCLayout對象時選擇GMT時間格式時:
??? ... ...
???
??? /* step 2: Instantiate a layout object */
??? std::auto_ptr _layout(new TTCCLayout(true));
???
??? ... ...
???
輸出結(jié)果:
10-16-04 11:12:47,678 [1075298944] DEBUG test_logger <> - teststr
				
本文介紹了控制log信息格式的相關(guān)知識,下一部分將詳細介紹log信息的幾種文件操作方式。

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

評論

# re: 開源日志系統(tǒng)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>
            久久久久青草大香线综合精品| 久久久久久久网站| 欧美伊人久久大香线蕉综合69| 一区二区三区波多野结衣在线观看| 在线观看中文字幕不卡| 亚洲国产精品99久久久久久久久| 久久一二三区| 亚洲视频在线视频| 伊人久久大香线蕉av超碰演员| 国产最新精品精品你懂的| 狠狠色丁香久久综合频道| 激情综合视频| 日韩一级片网址| 新67194成人永久网站| 久久久99精品免费观看不卡| 久久艳片www.17c.com| 亚洲福利视频二区| 亚洲区欧美区| 亚洲综合日本| 免费成人黄色av| 国产精品嫩草99av在线| 狠色狠色综合久久| 亚洲午夜av电影| 久久亚洲私人国产精品va| 亚洲精品老司机| 欧美在线免费视频| 欧美日韩免费高清一区色橹橹| 国产欧美日韩不卡免费| 亚洲人成在线播放| 在线精品观看| 亚洲男同1069视频| 欧美91视频| 在线一区观看| 欧美肥婆bbw| 国产一区二区毛片| 亚洲网站视频福利| 亚洲国产精品高清久久久| 香港久久久电影| 国产精品久久久久国产a级| 亚洲国产精品嫩草影院| 欧美一区二区| 9l视频自拍蝌蚪9l视频成人 | 亚洲精品免费在线| 久久gogo国模裸体人体| 国产精品r级在线| 亚洲另类视频| 欧美岛国激情| 久久综合一区二区三区| 国产综合色产在线精品| 亚洲欧美日本国产有色| 日韩视频中午一区| 欧美激情国产日韩| 亚洲日本中文字幕区| 麻豆精品国产91久久久久久| 午夜精品免费视频| 久久成年人视频| 国产欧美精品国产国产专区| 亚洲欧美国产va在线影院| 91久久精品日日躁夜夜躁欧美 | 亚洲高清电影| 亚洲美女中文字幕| 另类av导航| 久久综合九九| 中文无字幕一区二区三区| 欧美夜福利tv在线| 一本一道久久综合狠狠老精东影业 | 欧美va天堂va视频va在线| 欧美成人精品在线播放| 久久精品中文字幕免费mv| 欧美日韩一区二区三区视频| 久久综合综合久久综合| 国产午夜亚洲精品不卡| 一本色道久久综合| 亚洲欧洲另类| 欧美成人蜜桃| 欧美激情一区二区在线 | 欧美在线综合| 久久九九久精品国产免费直播| 国产精品成av人在线视午夜片| 亚洲黄色性网站| 日韩图片一区| 欧美三区免费完整视频在线观看| 亚洲国产导航| 中日韩美女免费视频网址在线观看 | 欧美成人在线免费视频| 久久久久9999亚洲精品| 一区二区在线不卡| 久久久久久综合网天天| 欧美高清你懂得| 国产精品99久久久久久久久| 欧美日韩国产在线| 午夜精品短视频| 免费中文字幕日韩欧美| 99re热这里只有精品视频 | 亚洲午夜电影在线观看| 欧美一二三视频| 亚洲国产一区二区三区高清| 久久精品理论片| 亚洲肉体裸体xxxx137| 国产精品任我爽爆在线播放| 久久天天躁狠狠躁夜夜爽蜜月 | 欧美一区=区| 亚洲精品乱码| 樱花yy私人影院亚洲| 国产精品极品美女粉嫩高清在线| 久久噜噜亚洲综合| 午夜国产不卡在线观看视频| 亚洲欧洲一区| 亚洲乱码国产乱码精品精可以看| 免费看的黄色欧美网站| 欧美一区二区三区免费观看| 一区二区三区四区五区精品| 亚洲精选91| 一区二区三区成人精品| 亚洲精品一区在线观看| 亚洲精品久久视频| 亚洲欧洲在线观看| 久久精品国产999大香线蕉| 99精品99| 亚洲小视频在线观看| 亚洲性线免费观看视频成熟| 亚洲精品视频二区| 一区二区免费在线视频| 亚洲淫片在线视频| 欧美一区二区三区四区夜夜大片| 亚洲欧美日韩综合| 麻豆91精品91久久久的内涵| 久久久精品久久久久| 欧美国产91| 国产欧美精品日韩区二区麻豆天美| 国产一区欧美| 99国内精品| 免播放器亚洲一区| 亚洲精品欧美| 一本久道久久综合狠狠爱| 久久精品五月婷婷| 欧美国产日韩一区| 国产一区二区三区四区在线观看| 亚洲激情视频在线播放| 亚洲欧美春色| 亚洲黄色免费电影| 欧美一区二区三区视频| 欧美日韩国产经典色站一区二区三区| 国产精品女同互慰在线看| 亚洲欧洲在线一区| 久久视频这里只有精品| 中文久久乱码一区二区| 欧美—级在线免费片| 亚洲高清在线精品| 美日韩在线观看| 久久成人免费| 国产专区欧美专区| 久久精品国产99| 欧美影院精品一区| 国产主播一区二区三区四区| 香蕉成人伊视频在线观看| 日韩网站在线观看| 欧美日韩国产首页| 亚洲一区观看| 亚洲婷婷综合色高清在线| 欧美黄免费看| 欧美精品国产| 午夜视频一区二区| 久久国产加勒比精品无码| 136国产福利精品导航网址应用 | 国产一区二区三区在线观看免费| 亚洲午夜精品久久久久久app| 日韩亚洲欧美中文三级| 国产精品一区二区三区观看| 久久爱www久久做| 乱码第一页成人| 亚洲一区影音先锋| 久久福利资源站| 一区二区不卡在线视频 午夜欧美不卡在| 亚洲高清不卡在线观看| 国产精品日韩欧美一区| 亚洲国产欧美国产综合一区 | 在线视频亚洲欧美| 国产一区二区日韩精品| 亚洲日本va午夜在线电影| 国产一区二区三区免费不卡| 亚洲国产成人一区| 亚洲高清在线观看| 久久成人18免费观看| 亚洲免费在线观看视频| 免费观看成人| 91久久中文字幕| 在线观看国产精品网站| 在线一区免费观看| 一本久久综合亚洲鲁鲁| 欧美99久久| 亚洲福利在线看| 亚洲激情午夜| 欧美成年网站| 亚洲欧洲综合另类| 亚洲综合导航| 国产亚洲欧美在线| 久久精品视频亚洲| 农村妇女精品| 一本色道久久综合精品竹菊|