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

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>
            99国产精品一区| 激情五月婷婷综合| 亚洲伊人观看| 亚洲午夜免费福利视频| 国产精品免费看久久久香蕉| 久久精品欧美日韩精品| 久久经典综合| 日韩一二三在线视频播| 一区二区三区四区五区在线| 国产日韩一区二区三区| 欧美日韩国产综合视频在线| 国产欧美一区二区精品婷婷| 久久久久.com| 欧美精品免费在线观看| 亚洲欧美日韩国产成人精品影院| 欧美一区二区黄| 亚洲精品一区中文| 亚洲欧美日韩中文视频| 亚洲激情女人| 亚洲综合欧美| 亚洲美女性视频| 亚洲欧美日韩国产一区二区| 亚洲黄网站黄| 亚洲一区二区少妇| 日韩一区二区精品| 欧美影片第一页| 亚洲视频在线观看网站| 久久久伊人欧美| 亚洲一区视频在线观看视频| 久久综合999| 欧美一区二区精美| 欧美另类一区| 蜜桃伊人久久| 国产噜噜噜噜噜久久久久久久久| 亚洲国产精品女人久久久| 国产精品欧美日韩| 亚洲日本视频| 亚洲国产精品精华液2区45| 亚洲一区二区三区中文字幕| 亚洲美女av网站| 久久久夜夜夜| 久久夜色精品国产噜噜av| 欧美色精品天天在线观看视频| 你懂的成人av| 激情综合网激情| 欧美一区二视频在线免费观看| 亚洲午夜三级在线| 欧美激情综合网| 亚洲福利小视频| 在线观看av不卡| 久久成人一区| 久久久久久自在自线| 国产精品一区久久| 亚洲自拍16p| 午夜视频精品| 国产精品资源| 亚洲欧美激情四射在线日 | 国产精品成人aaaaa网站| 欧美成人dvd在线视频| 国内精品国产成人| 久久久国产一区二区| 久久一区二区三区四区| 狠狠色狠狠色综合| 久久午夜电影网| 欧美不卡视频一区| 亚洲日韩第九十九页| 欧美激情五月| 日韩视频在线免费| 亚洲欧美日本在线| 国产欧美一区二区精品婷婷| 欧美影院成年免费版| 久久躁日日躁aaaaxxxx| 在线精品观看| 欧美肥婆bbw| 日韩亚洲在线| 国产精品久久久久久妇女6080| 久久成人人人人精品欧| 国产永久精品大片wwwapp| 久久精品五月| 亚洲电影视频在线| 一本色道久久88精品综合| 欧美三级电影精品| 欧美亚洲免费高清在线观看| 久久伊人精品天天| 亚洲精选成人| 国产精品一卡二| 久久这里有精品15一区二区三区| 91久久中文字幕| 亚洲欧美一区二区三区久久| 精品福利免费观看| 欧美日韩国产一中文字不卡| 午夜精品在线看| 亚洲福利一区| 欧美一站二站| 日韩视频一区二区三区| 国产精品永久免费观看| 美女爽到呻吟久久久久| 亚洲一区二区三区涩| 欧美大片在线看免费观看| 亚洲一区二区欧美| 在线观看亚洲精品| 国产精品久久毛片a| 久久亚洲美女| 午夜视频精品| 亚洲三级免费电影| 久久午夜精品| 亚洲欧美卡通另类91av | 欧美日韩在线大尺度| 欧美伊久线香蕉线新在线| 亚洲精品乱码久久久久久日本蜜臀| 午夜视频精品| 中国成人亚色综合网站| 亚洲国产精品999| 国产午夜久久| 欧美亚日韩国产aⅴ精品中极品| 久久亚洲精选| 久久精品国产精品亚洲综合| 一本一本久久a久久精品综合麻豆| 美国三级日本三级久久99| 午夜精品在线观看| 在线视频欧美精品| 亚洲日本一区二区| 1024成人网色www| 国产一区免费视频| 国产农村妇女毛片精品久久莱园子 | 亚洲精品免费在线观看| 狠狠色狠狠色综合日日小说| 国产精品专区一| 国产精品伦一区| 欧美视频官网| 欧美性猛片xxxx免费看久爱| 欧美另类女人| 欧美日本成人| 欧美精品综合| 欧美日韩高清不卡| 欧美日韩xxxxx| 欧美日韩欧美一区二区| 欧美另类综合| 欧美日韩一二三四五区| 欧美日韩精品综合在线| 欧美日韩精品一本二本三本| 欧美日韩不卡一区| 欧美日韩在线三区| 欧美午夜a级限制福利片| 欧美性做爰猛烈叫床潮| 国产精品乱码人人做人人爱| 国产精品免费网站| 国产日韩欧美精品一区| 欧美日韩国产精品自在自线| 久久久久综合| 免费日韩精品中文字幕视频在线| 免费成人av在线| 亚洲国产精品一区二区www在线| 亚洲高清不卡在线观看| 亚洲日本视频| 亚洲午夜精品17c| 欧美在现视频| 蜜臀va亚洲va欧美va天堂| 欧美精品一区二区在线播放| 欧美三区在线视频| 国产视频在线观看一区二区| 激情亚洲一区二区三区四区| 亚洲激情不卡| 亚洲资源av| 免费成人激情视频| 亚洲精品裸体| 久久国产精品一区二区| 免费短视频成人日韩| 欧美日韩国产综合视频在线| 国产精品呻吟| 激情成人av在线| 亚洲精选91| 久久成人这里只有精品| 欧美国产先锋| 亚洲综合色丁香婷婷六月图片| 欧美在线观看天堂一区二区三区| 欧美sm视频| 国产精品永久免费| 日韩写真视频在线观看| 欧美一区日本一区韩国一区| 欧美国产一区视频在线观看| 亚洲影音先锋| 欧美激情精品久久久| 国产女主播一区二区| 亚洲精品视频免费| 久久狠狠亚洲综合| 亚洲靠逼com| 欧美综合第一页| 国产精品高潮呻吟视频| 亚洲高清资源| 久久精品国产999大香线蕉| 亚洲免费精彩视频| 久久先锋资源| 国产精品一区久久久| 99精品国产99久久久久久福利| 久久亚洲精品一区二区| 亚洲小视频在线观看| 欧美精品一区二区久久婷婷| 精品成人在线观看| 欧美一区网站|