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

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>
            久久精品综合| 久久精品1区| 国产精品久久久久久久app| 久久久久久穴| 久久亚洲不卡| 欧美精品97| 欧美日韩免费观看一区三区| 欧美精品在线观看一区二区| 欧美日韩99| 国产精品三级视频| 国产一区二区中文字幕免费看| 国产日韩欧美在线| 狠狠色综合播放一区二区| 伊人婷婷久久| 宅男噜噜噜66一区二区66| 国产精品99久久久久久www| 亚洲一区图片| 久久久国产亚洲精品| 免费成人av在线看| 亚洲精品国产精品乱码不99按摩| 在线免费不卡视频| 亚洲乱码国产乱码精品精| 亚洲一区二区免费在线| 久久久精品视频成人| 欧美国产极速在线| 亚洲视频大全| 老司机aⅴ在线精品导航| 欧美日韩精品系列| 国产一区二区按摩在线观看| 亚洲人成在线观看| 性欧美videos另类喷潮| 欧美激情第六页| 亚洲欧美综合v| 欧美精品国产| 国产亚洲女人久久久久毛片| 欧美日韩一级片在线观看| 国产日韩在线看片| 一区二区三区日韩| 久久久久综合网| 夜夜嗨av一区二区三区中文字幕| 久久国产日韩欧美| 国产精品国产a| 亚洲国产女人aaa毛片在线| 欧美亚洲综合在线| 日韩亚洲欧美高清| 午夜精品一区二区三区在线播放| 国产精品99久久久久久有的能看| 韩日视频一区| 蜜桃精品一区二区三区| 亚洲日本欧美| 久久人体大胆视频| 久久精品国产一区二区电影| 亚洲黄色大片| 欧美亚洲视频在线看网址| 欧美精品激情blacked18| 亚洲免费观看高清完整版在线观看熊| 欧美午夜视频| 欧美日韩一区二区免费视频| 国产精品久久久| 先锋影音久久久| 欧美一区高清| 亚洲精品视频在线观看免费| 亚洲精品久久久久久久久久久久| 欧美韩国日本综合| 午夜伦理片一区| 欧美高清免费| 欧美在线播放一区| 免费欧美在线视频| 久久爱www.| 欧美日韩亚洲视频| 亚洲一区二区三区免费观看| 日韩一级二级三级| 1024国产精品| 亚洲免费一在线| 亚洲欧美日韩爽爽影院| 在线观看欧美日韩| 欧美在线观看一区| 亚洲欧美成人一区二区在线电影| 亚洲蜜桃精久久久久久久| 欧美日韩国产美| 免费欧美日韩国产三级电影| 国产伦精品一区二区三区高清 | 亚洲天堂第二页| 欧美人与性禽动交情品| 亚洲国产美国国产综合一区二区| 国产亚洲精品bv在线观看| 亚洲欧美精品在线| 久久激情综合网| 伊人久久成人| 欧美激情按摩在线| 亚洲午夜女主播在线直播| 性欧美暴力猛交69hd| 国产精品免费久久久久久| 亚洲在线成人| 欧美激情一区在线观看| 亚洲一区二区黄色| 国产午夜精品视频免费不卡69堂| 久久精品国产99精品国产亚洲性色| 免费欧美在线| 欧美在线视频导航| 999亚洲国产精| 精品成人一区二区| 国产精品久99| 欧美国产日韩视频| 久久精品视频免费观看| 亚洲午夜久久久| 日韩视频中文| 亚洲精品国产精品久久清纯直播| 性久久久久久| 亚洲网站在线| 99精品国产在热久久婷婷| 亚洲电影免费观看高清完整版在线| 欧美日韩精品免费观看视一区二区| 亚洲视频在线视频| 亚洲国产色一区| 欧美视频亚洲视频| 日韩亚洲国产精品| 美女91精品| 欧美亚洲三区| 国产精品99久久久久久宅男| 国内精品久久久久久久97牛牛| 免费的成人av| 久久久999成人| 午夜精品久久99蜜桃的功能介绍| 免费成人你懂的| 欧美在线免费播放| 欧美亚洲系列| 久久精品国产亚洲5555| 中文亚洲欧美| 亚洲永久网站| 亚洲国产成人av好男人在线观看| 国产精品一区二区女厕厕| 欧美日韩天堂| 欧美激情一区| 国产精品成人一区| 噜噜爱69成人精品| 男女激情久久| 欧美日韩高清区| 国产精品免费看片| 国产网站欧美日韩免费精品在线观看| 欧美午夜免费电影| 久久精品国产精品亚洲| 欧美在线观看天堂一区二区三区| 欧美在线视屏| 欧美激情在线狂野欧美精品| 欧美成人国产一区二区| 久久久蜜桃一区二区人| 久久在线免费观看视频| 欧美激情综合亚洲一二区 | 国产欧美在线看| 国产主播一区二区三区| 1024成人| 欧美一级午夜免费电影| 久久亚洲一区二区| 一区二区三区在线视频观看 | 99视频在线观看一区三区| 99综合精品| 麻豆精品在线播放| 午夜视频在线观看一区二区| 久久综合色天天久久综合图片| 欧美激情影院| 亚洲国产第一| 免费观看成人| 久久福利视频导航| 国产一区二区三区日韩欧美| 日韩网站在线观看| 欧美/亚洲一区| 鲁鲁狠狠狠7777一区二区| 国产人妖伪娘一区91| 午夜激情一区| 欧美一区二区三区视频在线| 国产精品99久久久久久久vr| 亚洲人成绝费网站色www| 久久综合色影院| 欧美在线观看视频一区二区| 亚洲欧美日韩国产精品| 欧美一级午夜免费电影| 在线免费高清一区二区三区| 国产精品久久久久久亚洲调教| 欧美一区二粉嫩精品国产一线天| 久久人人精品| 亚洲欧洲精品一区| 亚洲日本欧美| 久久精品国产亚洲a| 欧美 日韩 国产在线 | 久久中文在线| 一区二区电影免费观看| 欧美大秀在线观看| 老色鬼精品视频在线观看播放| 美女成人午夜| 一区二区成人精品 | 久久一区二区三区四区| 久久精品一二三区| 亚洲手机视频| 久久久国际精品| 亚洲视屏一区| 久久蜜桃av一区精品变态类天堂| 99国产精品国产精品久久| 99在线精品视频在线观看| 欧美日韩国产黄|