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

   C++ 技術(shù)中心

   :: 首頁 :: 聯(lián)系 ::  :: 管理
  160 Posts :: 0 Stories :: 87 Comments :: 0 Trackbacks

公告

鄭重聲明:本BLOG所發(fā)表的原創(chuàng)文章,作者保留一切權(quán)利。必須經(jīng)過作者本人同意后方可轉(zhuǎn)載,并注名作者(天空)和出處(CppBlog.com)。作者Email:coder@luckcoder.com

留言簿(27)

搜索

  •  

最新隨筆

最新評論

評論排行榜

一.各種布局器
log4cplus通過布局器(Layouts)來控制輸出的格式,log4cplus提供了三種類型的Layouts分別是:
SimpleLayout、PatternLayout、和TTCCLayout。

二.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

三. PatternLayout
是一種有詞法分析功能的模式布局器,一提起模式就會想起正則表達(dá)式,
這里的模式和正則表達(dá)式類似,但是遠(yuǎn)比后者簡單,能夠?qū)︻A(yù)定義的標(biāo)識符
(稱為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",原始信息被包含到一堆有格式的信息當(dāng)中了,
這就使得用戶可以根據(jù)自身需要來定制顯示內(nèi)容。"pattern"可以包含普通字符串和預(yù)定義的標(biāo)識符,
其中:(
1)普通字符串,能夠被直接顯示的信息。
2)預(yù)定義標(biāo)識符,通過"%"與一個或多個字符共同構(gòu)成預(yù)定義的標(biāo)識符,能夠產(chǎn)生出特定格式信息。
   關(guān)于預(yù)定義標(biāo)識符,log4cplus文檔中提供了詳細(xì)的格式說明,我每種都試了一下,以上述代碼為例,
   根據(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",顯示本地時間,當(dāng)std::string pattern ="%D" 時輸出:"2004-10-16 18:55:45",%d顯示標(biāo)準(zhǔn)時間,    
          所以當(dāng)std::string pattern ="%d" 時輸出 "2004-10-16 10:55:45" (因為我們是東8區(qū),差8個小時啊)。
          可以通過%d{...}定義更詳細(xì)的顯示格式,比如%d{%H:%M:%s}表示要顯示小時:分鐘:秒。大括號中可顯示的
          預(yù)定義標(biāo)識符如下:%a -- 表示禮拜幾,英文縮寫形式,比如"Fri"%A -- 表示禮拜幾,比如"Friday"%b -- 表示幾月份,
          英文縮寫形式,
          比如"Oct"%B -- 表示幾月份,"October"%c -- 標(biāo)準(zhǔn)的日期+時間格式,
          如 "Sat Oct 16 18:56:19 2004"%d -- 表示今天是這個月的幾號(1-31)"16"%H -- 表示當(dāng)前時刻是幾時(0-23),
          如 "18"%I -- 表示當(dāng)前時刻是幾時(1-12),如 "6"%j -- 表示今天是哪一天(1-366),
          如 "290"%m -- 表示本月是哪一月(1-12),
          如 "10"%M -- 表示當(dāng)前時刻是哪一分鐘(0-59),
          如 "59"%p -- 表示現(xiàn)在是上午還是下午, AM or PM%q -- 表示當(dāng)前時刻中毫秒部分(0-999),
          如 "237"%Q -- 表示當(dāng)前時刻中帶小數(shù)的毫秒部分(0-999.999),
          如 "430.732"%S -- 表示當(dāng)前時刻的多少秒(0-59),
          如 "32"%U -- 表示本周是今年的第幾個禮拜,以周日為第一天開始計算(0-53),
          如 "41"%w -- 表示禮拜幾,(0-6, 禮拜天為0),
          如 "6"%W -- 表示本周是今年的第幾個禮拜,以周一為第一天開始計算(0-53),
          如 "41"%x -- 標(biāo)準(zhǔn)的日期格式,如 "10/16/04"%X -- 標(biāo)準(zhǔn)的時間格式,
          如 "19:02:34"%y -- 兩位數(shù)的年份(0-99),如 "04"%Y -- 四位數(shù)的年份,
          如 "2004"%Z -- 時區(qū)名,比如 "GMT"
      (4)"%F",輸出當(dāng)前記錄器所在的文件名稱,比如std::string pattern ="%F" 時輸出: "main.cpp"
      (5)"%L",輸出當(dāng)前記錄器所在的文件行號,比如std::string pattern ="%L" 時輸出: "51"
      (6)"%l",輸出當(dāng)前記錄器所在的文件名稱和行號,比如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方面的詳細(xì)介紹會在下文中提到。
      (12)格式對齊,比如std::string pattern ="%-10m"時表示左對齊,寬度是10,此時會輸出"teststr   ",當(dāng)
            然其它的控制字符也可以相同的方式來使用,比如"%-12d","%-5p"等等(剛接觸log4cplus文檔時還以為
            "%-5p"整個字符串代表LogLevel呢,呵呵)。
            
 四. TTCCLayout
是在PatternLayout基礎(chǔ)上發(fā)展的一種缺省的帶格式輸出的布局器, 其格式由時間,線程ID,Logger和NDC 組成
 。提供給那些想顯示典型的信息(一般情況下夠用了)又懶得配置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    
    當(dāng)構(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
*/

posted on 2011-04-02 15:43 C++技術(shù)中心 閱讀(3633) 評論(0)  編輯 收藏 引用 所屬分類: 三方庫
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产精品综合视频| 99国产一区二区三精品乱码| 麻豆国产精品777777在线| 性视频1819p久久| 欧美日韩一区自拍| 亚洲伦理中文字幕| 一二三四社区欧美黄| 欧美美女视频| 日韩午夜电影| 亚洲欧美高清| 国产麻豆日韩欧美久久| 亚洲欧美精品在线| 欧美在线观看网址综合| 国产日韩欧美精品在线| 欧美一区二区三区免费观看 | 欧美精品一区在线播放| 亚洲电影一级黄| 亚洲三级电影全部在线观看高清| 欧美va天堂va视频va在线| 欧美激情一二区| 亚洲精品中文字幕女同| 欧美三区美女| 亚洲私拍自拍| 久久不射中文字幕| 国产在线精品一区二区夜色| 久久久精品国产免费观看同学| 欧美jizz19性欧美| 亚洲精品久久7777| 欧美性淫爽ww久久久久无| 亚洲一区在线播放| 久久久久9999亚洲精品| 亚洲国产成人av| 欧美日韩免费区域视频在线观看| 亚洲午夜极品| 免费观看一区| 亚洲图色在线| 黄色成人小视频| 欧美日本精品在线| 午夜欧美大片免费观看| 欧美国产激情二区三区| 亚洲影音一区| 亚洲电影下载| 国产精品久久久久久久久免费 | 国产女精品视频网站免费| 亚洲乱码一区二区| 欧美揉bbbbb揉bbbbb| 午夜精品三级视频福利| 欧美成ee人免费视频| 亚洲视频一区二区在线观看| 国产亚洲福利社区一区| 欧美成人精品在线视频| 亚洲综合二区| 性色av一区二区三区红粉影视| 久久久国产一区二区三区| 亚洲肉体裸体xxxx137| 性久久久久久久久| 亚洲国产精品一区二区www| 国产精品久久7| 久热精品视频在线| 亚洲综合色激情五月| 亚洲欧洲精品一区二区三区波多野1战4| 欧美一区二区三区男人的天堂| 亚洲福利av| 国产精品日本一区二区| 欧美11—12娇小xxxx| 欧美一区三区三区高中清蜜桃| 亚洲人在线视频| 女同性一区二区三区人了人一| 亚洲欧美中日韩| 亚洲精品久久久久中文字幕欢迎你 | 亚洲欧美日本精品| 亚洲九九爱视频| 欧美高清成人| 久久亚洲风情| 欧美一区二区三区免费视| 一本大道久久a久久精二百| 在线免费日韩片| 国产日韩视频| 国产精品日韩高清| 欧美视频一区二区在线观看 | 欧美大片第1页| 久久xxxx| 欧美在线一区二区| 亚洲欧美日韩国产成人精品影院| 亚洲人成在线观看一区二区| 男女精品网站| 久久婷婷久久| 久久精品综合一区| 久久久精彩视频| 久久九九免费视频| 欧美一区二区女人| 午夜精品久久久久影视| 一区二区欧美日韩| 日韩西西人体444www| 亚洲精品日韩在线观看| 亚洲欧洲精品一区二区三区| 在线观看亚洲视频| 激情成人综合网| 狠狠色狠狠色综合日日91app| 国产亚洲毛片在线| 国产午夜精品一区理论片飘花| 国产精品国色综合久久| 欧美日韩在线观看一区二区| 欧美精品日韩一区| 欧美日本乱大交xxxxx| 欧美成人精品| 欧美女同视频| 欧美三区在线观看| 国产精品国产三级国产专区53 | 亚洲欧美乱综合| 午夜精品www| 欧美一区二区在线观看| 久久av在线| 裸体丰满少妇做受久久99精品| 麻豆精品在线播放| 欧美激情第3页| 欧美日韩午夜精品| 国产精品久久久久9999| 国产日产亚洲精品| 精品99一区二区| 亚洲精品一区二区网址| 亚洲视频每日更新| 中文av一区二区| 国产一级一区二区| 永久免费视频成人| 亚洲日本中文字幕区| 99精品99| 久久不射电影网| 亚洲福利视频一区| 一区二区福利| 性色av一区二区三区| 蜜臀91精品一区二区三区| 欧美日韩国产在线观看| 国产精品区一区二区三| 伊人色综合久久天天| av不卡在线观看| 欧美中文字幕在线播放| 亚洲第一精品电影| 一区二区三区偷拍| 久久国产精品久久久| 欧美1区3d| 国产精品大片wwwwww| 国产一在线精品一区在线观看| 亚洲欧洲一区二区天堂久久| 亚洲永久在线| 狂野欧美性猛交xxxx巴西| 亚洲国产成人久久| 亚洲一区二区三区乱码aⅴ蜜桃女| 久久久久一区二区三区| 欧美日韩国产精品一区| 国产一区二区高清视频| 亚洲精品网站在线播放gif| 欧美一区二区啪啪| 亚洲国产高潮在线观看| 亚洲综合精品自拍| 欧美激情第8页| 国语自产在线不卡| 一区二区三区四区国产| 噜噜噜躁狠狠躁狠狠精品视频 | 欧美aⅴ一区二区三区视频| 99re在线精品| 久久久久久久999精品视频| 欧美日韩一卡二卡| 在线观看亚洲精品| 欧美在线亚洲| 一区二区三区国产精华| 免费成人毛片| 黄色小说综合网站| 亚洲欧美日韩精品久久久| 欧美激情一区二区在线| 亚欧美中日韩视频| 欧美色视频在线| 最新亚洲一区| 麻豆91精品91久久久的内涵| 亚洲制服欧美中文字幕中文字幕| 欧美岛国在线观看| 尤物在线精品| 久久精品123| 亚洲小说欧美另类婷婷| 欧美欧美在线| 亚洲精品视频一区二区三区| 噜噜噜躁狠狠躁狠狠精品视频 | 中国成人黄色视屏| 欧美国产国产综合| 亚洲高清中文字幕| 久久夜色精品国产欧美乱极品| 在线亚洲伦理| 欧美日韩亚洲视频| 99精品欧美一区二区三区综合在线| 欧美成人一区二区三区片免费| 亚洲国产精品电影在线观看| 久久一区激情| 在线成人中文字幕| 欧美成人午夜77777| 久久五月婷婷丁香社区| 一区二区在线看| 久热精品视频在线观看| 久久精彩视频| 在线精品国精品国产尤物884a| 久久蜜臀精品av|