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

Benjamin

靜以修身,儉以養(yǎng)德,非澹薄無以明志,非寧靜無以致遠(yuǎn)。
隨筆 - 398, 文章 - 0, 評(píng)論 - 196, 引用 - 0
數(shù)據(jù)加載中……

linux下的log4cplus應(yīng)用

log4cplus主要包括layout、appender、loglevel等;實(shí)現(xiàn)了5個(gè)等級(jí)的信息:DEBUG、INFO、WARNING、ERROR和FATAL。
Layouts :布局器,控制輸出消息的格式.
Appenders :掛接器,與布局器緊密配合,將特定格式的消息輸出到所掛接的設(shè)備終端
(如屏幕,文件等等)。
Logger :記錄器,保存并跟蹤對(duì)象日志信息變更的實(shí)體,當(dāng)你需要對(duì)一個(gè)對(duì)象進(jìn)行
記錄時(shí),就需要生成一個(gè)logger。
Categories :分類器,層次化(hierarchy)的結(jié)構(gòu),用于對(duì)被記錄信息的分類,層次中每一個(gè)節(jié)點(diǎn)維護(hù)一個(gè)logger的所有信息。

使用log4cplus有六個(gè)基本步驟:
1. 實(shí)例化一個(gè)appender對(duì)象
2. 實(shí)例化一個(gè)layout對(duì)象
3. 將layout對(duì)象綁定(attach)到appender對(duì)象
4. 實(shí)例化一個(gè)logger對(duì)象,調(diào)用靜態(tài)函數(shù):log4cplus::Logger::getInstance("logger_name")
5. 將appender對(duì)象綁定(attach)到logger對(duì)象,如省略此步驟,標(biāo)準(zhǔn)輸出(屏幕)appender對(duì)象會(huì)綁定到logger
6. 設(shè)置logger的優(yōu)先級(jí),如省略此步驟,各種有限級(jí)的消息都將被記錄


下面的例子說明如何將日志寫到文件中,在編譯是要加上-llog4cplus -lthread
  1//Include .h file 
  2#include <log4cplus/logger.h> 
  3#include <log4cplus/fileappender.h> 
  4#include <log4cplus/consoleappender.h> 
  5#include <log4cplus/layout.h> 
  6#include <string>
  7#include <memory>
  8using namespace log4cplus; 
  9using namespace log4cplus::helpers; 
 10int main()
 11{
 12    //FileAppender(const log4cplus::tstring& filename,                     L
 13    //             OG4CPLUS_OPEN_MODE_TYPE mode = LOG4CPLUS_FSTREAM_NAMESPACE::ios::trunc,
 14    //             bool immediateFlush = true);                     
 15    //filename       : 文件名
 16    //mode           : 文件類型,可選擇的文件類型包括app、ate、binary、in、out、trunc標(biāo)志,缺省是trunc,表示將先前文件刪除。
 17    //immediateFlush :緩沖刷新標(biāo)志,如果為true表示每向文件寫一條記錄就刷新一次緩存,否則直到FileAppender
 18    //                 被關(guān)閉或文件緩存已滿才更新文件,一般是要設(shè)置true的,比如你往文件寫的過程中出了錯(cuò)誤(如程序非正常退出),
 19    //                 即使文件沒有正常關(guān)閉也可以保證程序終止時(shí)刻之前的所有記錄都會(huì)被正常保存。
 20    // 定義一個(gè)文件Appender 
 21    SharedAppenderPtr pFileAppender(new FileAppender(("testlog.log")));
 22    
 23    //log4cplus::RollingFileAppender::RollingFileAppender(const log4cplus::tstring& filename,                           
 24    //                                                                      long maxFileSize,
 25    //                                                                      int maxBackupIndex, 
 26    //                                                                      bool immediateFlush)
 27    //filename       : 文件名
 28    //maxFileSize    : 文件的最大尺寸
 29    //maxBackupIndex : 最大記錄文件數(shù)
 30    //immediateFlush : 緩沖刷新標(biāo)志
 31   //RollingFileAppender類可以根據(jù)你預(yù)先設(shè)定的大小來決定是否轉(zhuǎn)儲(chǔ),當(dāng)超過該大小,后續(xù)log信息會(huì)另存到新文件中,
 32   //除了定義每個(gè)記錄文件的大小之外,你還要確定在RollingFileAppender類對(duì)象構(gòu)造時(shí)最多需要多少個(gè)這樣的記錄文件(maxBackupIndex+1),
 33   //當(dāng)存儲(chǔ)的文件數(shù)目超過maxBackupIndex+1時(shí),會(huì)刪除最早生成的文件,保證整個(gè)文件數(shù)目等于maxBackupIndex+1。然后繼續(xù)記錄
 34    //SharedAppenderPtr  pFileAppender(new RollingFileAppender("testlog.log", 5*1024, 5));   
 35    
 36    
 37   //DailyRollingFileAppender::DailyRollingFileAppender(const log4cplus::tstring& filename,
 38   //                                                     DailyRollingFileSchedule schedule,
 39   //                                                     bool immediateFlush,
 40   //                                                     int maxBackupIndex)
 41   //DailyRollingFileAppender類可以根據(jù)你預(yù)先設(shè)定的頻度來決定是否轉(zhuǎn)儲(chǔ),當(dāng)超過該頻度,后續(xù)log信息會(huì)另存到新文件中
 42   //,這里的頻度包括:MONTHLY(每月)、WEEKLY(每周)、DAILY(每日)、TWICE_DAILY(每?jī)商欤OURLY(每時(shí))、MINUTELY(每分)。
 43   //maxBackupIndex的含義同上,
 44   //下面代碼運(yùn)行后會(huì)以分鐘為單位,分別生成名為Test.log.2004-10-17-03-03、
 45   //Test.log.2004-10-17-03-04和Test.log.2004-10-17-03-05這樣的文件;如果超過了就另存。
 46   //SharedAppenderPtr pFileAppender(new DailyRollingFileAppender("test.log", MINUTELY, true, 5));
 47   
 48   
 49   pFileAppender->setName("LoggerName");
 50    
 51   
 52    
 53    //"%%",轉(zhuǎn)義為%, 即,std::string pattern = "%%" 時(shí)輸出: "%"
 54    //"%c",輸出logger名稱,比如std::string pattern ="%c" 時(shí)輸出: "test_logger.subtest",
 55    //       也可以控制logger名稱的顯示層次,比如"%c{1}"時(shí)輸出"test_logger",其中數(shù)字表示層次
 56    //
 57    //"%D",顯示本地時(shí)間,當(dāng)std::string pattern ="%D" 時(shí)輸出:"2004-10-16 18:55:45",
 58    //      %d顯示標(biāo)準(zhǔn)時(shí)間,所以當(dāng)std::string pattern ="%d" 時(shí)輸出 "2004-10-16 10:55:45" (因?yàn)槲覀兪菛|8區(qū),差8個(gè)小時(shí)啊)。   
 59    //      可以通過%d{}定義更詳細(xì)的顯示格式,比如%d{%H:%M:%s}表示要顯示小時(shí):分鐘:秒。大括號(hào)中可顯示的     
 60    //      預(yù)定義標(biāo)識(shí)符如下:
 61    //%a -- 表示禮拜幾,英文縮寫形式,比如"Fri"
 62    //%A -- 表示禮拜幾,比如"Friday"
 63    //%b -- 表示幾月份,英文縮寫形式,比如"Oct"
 64    //%B -- 表示幾月份,"October"
 65    //%c -- 標(biāo)準(zhǔn)的日期+時(shí)間格式,如 "Sat Oct 16 18:56:19 2004"
 66    //%d -- 表示今天是這個(gè)月的幾號(hào)(1-31)"16"
 67    //%H -- 表示當(dāng)前時(shí)刻是幾時(shí)(0-23),如 "18"
 68    //%I -- 表示當(dāng)前時(shí)刻是幾時(shí)(1-12),如 "6"
 69    //%j -- 表示今天是哪一天(1-366),如 "290"
 70    //%m -- 表示本月是哪一月(1-12),如 "10"
 71    //%M -- 表示當(dāng)前時(shí)刻是哪一分鐘(0-59),如 "59"
 72    //%p -- 表示現(xiàn)在是上午還是下午, AM or PM
 73    //%q -- 表示當(dāng)前時(shí)刻中毫秒部分(0-999),如 "237"
 74    //%Q -- 表示當(dāng)前時(shí)刻中帶小數(shù)的毫秒部分(0-999.999),如 "430.732"%S -- 表示當(dāng)前時(shí)刻的多少秒(0-59),如 "32"
 75    //%U -- 表示本周是今年的第幾個(gè)禮拜,以周日為第一天開始計(jì)算(0-53),如 "41"
 76    //%w -- 表示禮拜幾,(0-6, 禮拜天為0),如 "6"
 77    //%W -- 表示本周是今年的第幾個(gè)禮拜,以周一為第一天開始計(jì)算(0-53
 78    //
 79    //"%F",輸出當(dāng)前記錄器所在的文件名稱
 80    //"%L",輸出當(dāng)前記錄器所在的文件行號(hào)"
 81    //"%l",輸出當(dāng)前記錄器所在的文件名稱和行號(hào)
 82    //"%m",輸出原始信息,以確保原始信息被嵌入到帶格式的信息中。
 83    //"%n",換行符,沒什么好解釋的
 84    //"%p",輸出LogLevel,比如std::string pattern ="%p" 時(shí)輸出:"DEBUG"ï 
 85    //"%x",嵌套診斷上下文NDC (nested diagnostic context) 輸出,從堆棧中彈出上下文信息,
 86    //       NDC可以用對(duì)不同源的log信息(同時(shí)地)交叉輸出進(jìn)行區(qū)分,關(guān)于NDC方面的詳細(xì)介紹會(huì)在下文中提到。
 87    //格式對(duì)齊,比如std::string pattern ="%-10m"時(shí)表示左對(duì)齊,寬度是10,此時(shí)會(huì)輸出"teststr   ",
 88    //當(dāng)然其它的控制字符也可以相同的方式來使用,比如"%-12d","%-5p"等等
 89    std::auto_ptr<Layout> pPatternLayout(new PatternLayout(("%p:%D  -%m [%l]%n"))); 
 90    pFileAppender->setLayout(pPatternLayout); 
 91                
 92    // 定義Logger 
 93    Logger pTestLogger = Logger::getInstance(("LoggerName"));    
 94
 95    // 將需要關(guān)聯(lián)Logger的Appender添加到Logger上 
 96    pTestLogger.addAppender(pFileAppender);     
 97        
 98    // 輸出日志信息 
 99    //LOG4CPLUS_WARN(pTestLogger, "This is a <Warn> log message"); 
100    //LOG4CPLUS_DEBUG(pTestLogger, "This is a <Warn> log message");
101    pTestLogger.setLogLevel(TRACE_LOG_LEVEL);
102
103    LOG4CPLUS_TRACE(pTestLogger, "printMessages()");
104    LOG4CPLUS_DEBUG(pTestLogger, "This is a DEBUG message");
105    LOG4CPLUS_INFO(pTestLogger, "This is a INFO message");
106    LOG4CPLUS_WARN(pTestLogger, "This is a WARN message");
107    LOG4CPLUS_ERROR(pTestLogger, "This is a ERROR message");
108    LOG4CPLUS_FATAL(pTestLogger, "This is a FATAL message");
109
110    return 1;
111}
112
下面的例子是輸出到控制臺(tái)的一個(gè)例子

#include <log4cplus/logger.h>
#include <log4cplus/consoleappender.h>
#include <log4cplus/layout.h>
#include <memory>
#include <string>
using namespace log4cplus;
using namespace log4cplus::helpers;
using namespace std;
int main()
{
// 定義一個(gè)控制臺(tái)的Appender
        SharedAppenderPtr pConsoleAppender(new ConsoleAppender());

        // 定義一個(gè)簡(jiǎn)單的Layout,并綁定到Appender
        auto_ptr<Layout> pSimpleLayout(new SimpleLayout());
        pConsoleAppender->setLayout(pSimpleLayout);

        // 定義Logger,并設(shè)置優(yōu)先級(jí)
        Logger pTestLogger = Logger::getInstance(("LoggerName"));   
        pTestLogger.setLogLevel(WARN_LOG_LEVEL);

        // 將需要關(guān)聯(lián)Logger的Appender添加到Logger上
        pTestLogger.addAppender(pConsoleAppender);

        // 輸出日志信息
        LOG4CPLUS_WARN(pTestLogger, "This is a <Warn> log message...");


    return 0;
}

上面的例子中我使用的log4cplus的版本是log4cplus-1.0.4。

posted on 2011-11-04 13:46 Benjamin 閱讀(1801) 評(píng)論(0)  編輯 收藏 引用 所屬分類: C/C++linux

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美激情综合在线| 一区二区av在线| 国产精品久久网| 伊人久久亚洲影院| 小处雏高清一区二区三区| 亚洲国产天堂网精品网站| 亚洲国产精品精华液网站| 亚洲激情第一页| 亚洲私人影吧| 久久综合综合久久综合| 亚洲国产精品久久精品怡红院| 久久综合色8888| 亚洲人体1000| 在线亚洲观看| 久久精品一区| 欧美性猛交xxxx乱大交蜜桃| 国产亚洲网站| 在线观看日韩一区| 欧美一级淫片aaaaaaa视频| 午夜一区在线| 欧美啪啪一区| 国产主播在线一区| 欧美精品电影在线| 国产美女在线精品免费观看| 久久天天狠狠| 久久久国产精品一区二区中文| 久久久久国产一区二区三区四区| 91久久精品国产91性色| 欧美一区二区三区电影在线观看| 免费看的黄色欧美网站| 国产精品日韩欧美一区二区| 亚洲国产精品专区久久| 久久不见久久见免费视频1| 欧美成人午夜| 欧美在线视频a| 国产亚洲福利| 亚洲午夜一区二区三区| 最新日韩在线视频| 欧美成人嫩草网站| 在线观看视频一区| 老司机午夜精品视频| 亚洲欧美精品在线观看| 国产精品九九久久久久久久| 亚洲图片在线观看| 亚洲精品一区中文| 国产精品啊啊啊| 午夜久久tv| 欧美在线亚洲一区| 激情欧美一区二区| 午夜精品久久久久久久蜜桃app| 激情成人综合网| 9l视频自拍蝌蚪9l视频成人| 亚洲精品免费在线播放| 一区二区在线视频观看| 一区二区三区成人| 欧美日韩国产一区二区三区地区| 久久综合九色综合欧美狠狠| 国产一区二区三区四区老人 | 国产精品久久久久久久久动漫| 性欧美videos另类喷潮| 久久久国产一区二区三区| 先锋影音一区二区三区| 亚洲欧美成人在线| 亚洲国产欧美一区| 久久www成人_看片免费不卡| 午夜激情综合网| 国产精品国产三级国产普通话99| 久久裸体视频| 国外成人在线视频| 午夜一区二区三视频在线观看| 亚洲一区二区三区激情| 亚洲乱码视频| 黄色国产精品一区二区三区| 久久精品女人天堂| 欧美少妇一区二区| 亚洲二区在线视频| 欧美日韩视频| 午夜精品999| 亚洲精品偷拍| 亚洲精品免费看| ●精品国产综合乱码久久久久| 日韩视频久久| 在线一区二区日韩| 浪潮色综合久久天堂| 亚洲淫片在线视频| 亚洲私人影吧| 欧美日韩免费观看一区三区| 国外成人在线视频| 99国产精品视频免费观看一公开| 国产精品成人v| 欧美激情一区二区三区 | 中文一区二区在线观看| 国内成人在线| 国产一区二区三区高清| 国产精品久久久久影院亚瑟 | 亚洲视频在线免费观看| 国产精品一区在线播放| 亚洲国产天堂久久综合网| 国产精品五区| 欧美专区在线播放| 夜夜嗨av一区二区三区中文字幕| 亚洲成人资源| 久久久久久婷| 玖玖综合伊人| 一区二区冒白浆视频| 一区二区高清视频| 久久久久久午夜| 一本色道久久综合亚洲91| 国产麻豆日韩| 亚洲精品一区二区三区99| 国产精品自在在线| 亚洲人成网站999久久久综合| 国产精品无码永久免费888| 欧美激情网友自拍| 国产区日韩欧美| 一本色道久久88精品综合| 亚洲电影一级黄| 性久久久久久久| 一区二区欧美在线| 久久野战av| 久久女同互慰一区二区三区| 欧美视频一区二区三区四区| 亚洲二区在线观看| 亚洲国产精品久久| 久久精品国产一区二区三| 亚洲欧美视频一区| 欧美视频中文在线看 | 亚洲人成亚洲人成在线观看图片 | 国产精品xnxxcom| 欧美不卡激情三级在线观看| 国产欧美婷婷中文| 亚洲一区二区不卡免费| 亚洲一区二区免费| 欧美激情视频一区二区三区在线播放 | 亚洲午夜av在线| 国产在线拍揄自揄视频不卡99 | 久久久一本精品99久久精品66| 亚洲欧美成人一区二区在线电影| 欧美精品大片| 亚洲美女淫视频| 日韩视频中文字幕| 欧美人交a欧美精品| 亚洲黑丝一区二区| 亚洲美女视频在线观看| 欧美国产精品人人做人人爱| 亚洲国产福利在线| 亚洲乱码国产乱码精品精| 欧美国产日韩一区二区| 亚洲国产一区二区三区高清| 亚洲精品资源| 国产精品黄视频| 亚洲欧美国产另类| 久久久久**毛片大全| 黑人操亚洲美女惩罚| 乱中年女人伦av一区二区| 欧美国产大片| 亚洲午夜影视影院在线观看| 国产精品免费看久久久香蕉| 欧美在线日韩| 亚洲高清一区二区三区| 亚洲一区www| 国产午夜精品久久久| 久久久www成人免费毛片麻豆| 欧美激情精品久久久久久蜜臀| 亚洲乱码精品一二三四区日韩在线| 欧美视频福利| 久久成人人人人精品欧| 老司机精品导航| 亚洲精品视频一区二区三区| 国产精品v日韩精品v欧美精品网站| 久久久免费精品视频| 91久久久在线| 亚洲另类一区二区| 欧美在线观看网址综合| 亚洲毛片一区| 欧美午夜片欧美片在线观看| 亚洲日产国产精品| 欧美怡红院视频一区二区三区| 免费视频一区| 欧美一区二区播放| 国产精品国产三级国产aⅴ入口| 国产日韩精品视频一区| 亚洲国产日韩一区| 欧美性猛交xxxx乱大交蜜桃 | 六月婷婷一区| 国产精品入口66mio| 亚洲小视频在线观看| 欧美成人在线网站| 久久成人精品| 久热精品视频在线观看| 亚洲伦理在线观看| 欧美国产精品中文字幕| 久久久久免费| 欧美国产大片| 久久精选视频| 一本色道综合亚洲| 国产视频一区二区在线观看| 午夜日韩激情| 亚洲午夜久久久久久尤物| 国产精品一区2区|