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

   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)

搜索

  •  

最新隨筆

最新評論

評論排行榜

一.如何將日志寫入到文件
將log信息記錄到文件應該說是日志系統(tǒng)的一個基本功能,log4cplus在此基礎上,提供了更多的功能,
可以按照你預先設定的大小來決定是否轉(zhuǎn)儲,當超過該大小,后續(xù)log信息會另存到新文件中,
依次類推;或者按照日期來決定是否轉(zhuǎn)儲。log4cplus提供了三個類用于文件操作,它們是:
FileAppender類、RollingFileAppender類、DailyRollingFileAppender類

二.FileAppender類
實現(xiàn)了基本的文件操作功能,構(gòu)造函數(shù)如下:
FileAppender(const log4cplus::tstring& filename,                    
             LOG4CPLUS_OPEN_MODE_TYPE mode = LOG4CPLUS_FSTREAM_NAMESPACE::ios::trunc,                    
             bool immediateFlush = true);                    
     
   filename: 文件名
   mode :    文件類型,可選擇的文件類型包括app、ate、binary、in、out、trunc,
                 因為實際上只是對stl的一個簡單包裝,缺省是trunc,表示將先前文件刪除。
   immediateFlush :緩沖刷新標志,如果為true表示每向文件寫一條記錄就刷新一次緩存,
                    否則直到FileAppender被關(guān)閉或文件緩存已滿才更新文件,一般是要設置true的,
                    比如你往文件寫的過程中出現(xiàn)了錯誤(如程序非正常退出),即使文件沒有正常關(guān)閉也可以保證程序終
                    止時刻之前的所有記錄都會被正常保存。

三. RollingFileAppender類
構(gòu)造函數(shù)如下:
log4cplus::RollingFileAppender::RollingFileAppender(
           const log4cplus::tstring& filename,                                                   
           long maxFileSize,                                                   
           int maxBackupIndex,                                                   
           bool immediateFlush)
    
      filename                : 文件名
      maxFileSize          : 文件的最大尺寸
      maxBackupIndex : 最大記錄文件數(shù)
      immediateFlush    : 緩沖刷新標志                                                   

RollingFileAppender類可以根據(jù)你預先設定的大小來決定是否轉(zhuǎn)儲,當超過該大小,后續(xù)log信息會另存到新文件中,
除了定義每個記錄文件的大小之外,你還要確定在RollingFileAppender類對象構(gòu)造時最多需要多少個這樣的記錄文件
(maxBackupIndex+1),當存儲的文件數(shù)目超過maxBackupIndex+1時,會刪除最早生成的文件,保證整個文件數(shù)目等于
maxBackupIndex+1。然后繼續(xù)記錄,比如以下代碼片段:


          
 
#define LOOP_COUNT 200000        
 SharedAppenderPtr _append(
new RollingFileAppender("Test.log"5*10245));    
 _append
->setName("file test");    
 _append
->setLayout( std::auto_ptr(new TTCCLayout()) );    
 Logger::getRoot().addAppender(_append);    
 Logger root 
= Logger::getRoot();    
 Logger test 
= Logger::getInstance("test");    
 Logger subTest 
= Logger::getInstance("test.subtest");    
 
for(int i=0; i<1000;i++)    {        
            NDCContextCreator _context(
"loop");        
            LOG4CPLUS_DEBUG(subTest, 
"Entering loop #" << i)   
   }
        
       

    運行結(jié)果:運行后會產(chǎn)生6個輸出文件,Test.log、Test.log.1、Test.log.2、Test.log.3、Test.log.4、Test.log.5
                       其中Test.log存放著最新寫入的信息,而最后一個文件中并不包含第一個寫入信息,說明已經(jīng)被不斷更新了。
                       需要指出的是,這里除了Test.log之外,每個文件的大小都是200K,而不是我們想像中的5K,
                       這是因為log4cplus中隱含定義了文件的最小尺寸是200K,只有大于200K的設置才生效,<= 200k的設置都會被認為是200K.

四. DailyRollingFileAppender類
構(gòu)造函數(shù)如下:
 DailyRollingFileAppender::DailyRollingFileAppender(const log4cplus::tstring& filename,
                                                    DailyRollingFileSchedule schedule,                                                  
                                                    bool immediateFlush,                                                  
                                                    int maxBackupIndex)                                                  
       filename       : 文件名
       schedule       : 存儲頻度
       immediateFlush : 緩沖刷新標志
       maxBackupIndex : 最大記錄文件數(shù)

DailyRollingFileAppender類可以根據(jù)你預先設定的頻度來決定是否轉(zhuǎn)儲,當超過該頻度,
后續(xù)log信息會另存到新文件中,這里的頻度包括:
MONTHLY(每月)、WEEKLY(每周)、DAILY(每日)、TWICE_DAILY(每兩天)、HOURLY(每時)、MINUTELY(每分)。
maxBackupIndex的含義同上所述,比如以下代碼片段:


          
 SharedAppenderPtr _append(
new DailyRollingFileAppender("Test.log", MINUTELY, true5));    
 _append
->setName("file test");    
 _append
->setLayout( std::auto_ptr(new TTCCLayout()) );    
 Logger::getRoot().addAppender(_append);    
 Logger root 
= Logger::getRoot();    
 Logger test 
= Logger::getInstance("test");    
 Logger subTest 
= Logger::getInstance("test.subtest");    
 
for(int i=0; i<100;i++)    {        
             NDCContextCreator _context(
"loop");        
             LOG4CPLUS_DEBUG(subTest, 
"Entering loop #" << i)    
 }
       
 
   

  運行結(jié)果:運行后會以分鐘為單位,分別生成名為
  Test.log.2004-10-17-03-03、Test.log.2004-10-17-03-04和Test.log.2004-10-17-03-05這樣的文件。
  需要指出的是,剛看到按照頻度(如HOURLY、MINUTELY)轉(zhuǎn)儲這樣的概念,以為log4cplus提供了內(nèi)部定
  時器,感覺很奇怪,因為日志系統(tǒng)不應該主動記錄,而loging事件總是應該被動觸發(fā)的啊。仔細看了源
  代碼后才知道這里的"頻度"并不是你寫入文件的速度,其實是否轉(zhuǎn)儲的標準并不依賴你寫入文件的速度,
  而是依賴于寫入的那一時刻是否滿足了頻度條件,即是否超過了以分鐘、小時、周、月為單位的時間刻度,
  如果超過了就另存。本部分詳細介紹log信息的幾種文件操作方式,下面將重點介紹一下如何有選擇地控
  制log信息的輸出。
 
 

posted on 2011-04-02 15:50 C++技術(shù)中心 閱讀(9135) 評論(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>
            夜夜夜精品看看| 欧美精品九九| 亚洲高清不卡在线| 久久综合九色综合欧美就去吻| 午夜日韩激情| 久久久7777| 欧美成人有码| 亚洲精选一区| 亚洲欧美精品在线| 久久久综合激的五月天| 欧美激情按摩| 国产精品系列在线播放| 极品av少妇一区二区| 亚洲免费观看高清完整版在线观看熊 | 亚洲电影在线观看| 欧美一区成人| 久久精品国语| 欧美日韩国产在线播放| 国产日韩综合| 亚洲蜜桃精久久久久久久| 欧美一区二区三区四区在线观看地址| 久久综合狠狠综合久久激情| 亚洲乱码国产乱码精品精天堂| 欧美亚洲免费高清在线观看| 欧美精彩视频一区二区三区| 国产日韩在线播放| 亚洲免费观看| 免费观看日韩av| 亚洲欧美激情诱惑| 欧美精品一区二区视频| 国产精品成人观看视频国产奇米| 国模叶桐国产精品一区| 亚洲图片欧洲图片日韩av| 免费在线观看精品| 欧美亚洲一区二区在线观看| 欧美日韩久久| 亚洲精品美女免费| 猛男gaygay欧美视频| 亚洲欧美日韩国产综合| 欧美日韩成人综合天天影院| 在线日韩欧美| 久久久欧美精品| 亚洲淫片在线视频| 欧美日韩一区三区| 亚洲美女91| 亚洲国产高清一区二区三区| 久久九九99视频| 国产日韩在线视频| 欧美亚洲免费在线| 中文久久精品| 国产精品电影观看| 亚洲一级电影| 99www免费人成精品| 欧美精品在线观看91| 亚洲精品久久久久久久久久久久| 男人的天堂成人在线| 久久一区亚洲| 亚洲国产视频直播| 狠狠入ady亚洲精品| 欧美在线视频一区二区三区| 亚洲综合第一页| 国产日韩成人精品| 久久精品国产欧美亚洲人人爽| 亚洲尤物视频在线| 国产欧美日韩专区发布| 欧美在线精品免播放器视频| 午夜精品久久久久久久99樱桃| 国产一区二区精品久久| 美国成人直播| 欧美国产日本高清在线| 日韩亚洲国产精品| 一区二区欧美日韩| 国产日韩精品一区二区三区在线 | 亚洲在线一区| 欧美一区二区三区免费观看| 亚洲综合精品一区二区| 国产麻豆视频精品| 久久久久久久久久看片| 久热这里只精品99re8久| 亚洲日本va午夜在线影院| 亚洲精品乱码久久久久久按摩观| 欧美激情久久久久久| 亚洲天堂免费观看| 亚洲女性喷水在线观看一区| 国产一区二区无遮挡| 欧美国产极速在线| 欧美三级网址| 久久久久久久网| 蜜臀av性久久久久蜜臀aⅴ| 国产精品99久久99久久久二8| 亚洲影视在线| 亚洲国产成人高清精品| 夜夜嗨av一区二区三区中文字幕 | 在线观看亚洲| 亚洲人久久久| 国产一区二区久久| 亚洲精品欧美专区| 国产一区二区精品久久| 91久久久久久久久| 国产视频一区欧美| 亚洲国内高清视频| 国内成人精品视频| 日韩视频在线观看| 国产综合婷婷| 一区二区三区四区国产精品| 亚洲二区在线视频| 亚洲欧美日韩精品久久奇米色影视 | 国产一区在线视频| 亚洲毛片一区二区| 樱花yy私人影院亚洲| 亚洲视频在线观看网站| 亚洲大胆av| 欧美主播一区二区三区美女 久久精品人 | 午夜精品国产更新| 在线视频欧美一区| 久久亚洲精品一区二区| 久久福利资源站| 国产精品激情电影| 日韩午夜在线视频| 99精品国产在热久久下载| 玖玖在线精品| 麻豆视频一区二区| 一区二区三区在线看| 欧美一级二区| 欧美一区二视频| 国产精品视频99| 亚洲色图综合久久| 亚洲五月六月| 夜夜嗨av色综合久久久综合网| 亚洲福利视频三区| 久久久精品性| 久久综合婷婷| 国内激情久久| 久久精品国产亚洲精品| 久久久久国产一区二区| 国产欧美日韩在线观看| 亚洲欧美中文日韩v在线观看| 亚洲制服少妇| 国产精品久久久久久久浪潮网站| 一本一本大道香蕉久在线精品| av不卡在线| 欧美日韩一区二区视频在线观看 | 亚洲第一中文字幕| 亚洲风情在线资源站| 久久女同互慰一区二区三区| 麻豆9191精品国产| 最近看过的日韩成人| 欧美激情精品久久久久久变态| 亚洲精品一品区二品区三品区| 亚洲免费精彩视频| 欧美视频一区二区三区…| 亚洲婷婷综合久久一本伊一区| 欧美一级视频| 亚洲第一免费播放区| 欧美激情精品久久久久久免费印度 | 欧美日韩精品免费看| 在线视频精品一区| 久久精品一区四区| 亚洲欧洲另类| 国产精品久久99| 久久国产主播精品| 亚洲激情视频网| 性欧美1819sex性高清| 精品99一区二区三区| 欧美精品一区二区在线播放| 亚洲免费视频在线观看| 欧美.日韩.国产.一区.二区| 亚洲日本va在线观看| 欧美视频官网| 久久精品中文| 这里只有精品视频在线| 看欧美日韩国产| 99热精品在线| 国产一区二区三区丝袜| 欧美黑人一区二区三区| 羞羞答答国产精品www一本| 欧美国产欧美综合| 亚洲影视综合| 亚洲国产一区二区三区青草影视| 欧美视频福利| 蜜桃av综合| 欧美一区二区成人| 亚洲免费成人| 欧美高清在线观看| 欧美中文在线观看国产| 一区二区三区|亚洲午夜| 国产专区一区| 国产精品v亚洲精品v日韩精品 | 99re8这里有精品热视频免费| 亚洲黄色大片| 国产在线精品成人一区二区三区| 欧美性一二三区| 欧美成人按摩| 欧美在线日韩| 一区二区三区久久网| 亚洲国产精品美女| 久久夜色精品国产欧美乱| 亚洲欧美视频在线观看| 99精品国产在热久久下载| 亚洲欧洲在线播放|