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

Log4cpp學(xué)習(xí)記錄

Posted on 2008-09-09 17:35 美洲豹 閱讀(5656) 評(píng)論(1)  編輯 收藏 引用

Log4cpp學(xué)習(xí)記錄

1.       下載

http://log4cpp.sourceforge.net/

2.       編譯(這一步一開始搞了比較久,后來(lái)搜到如下的信息幫助解決了)

問(wèn)題:由于log4cpp-0.3.5rc3僅提供了vc6的工程文件,因此,使用vs2005打開后,需要進(jìn)行轉(zhuǎn)換。但是轉(zhuǎn)換后,不能正確編譯,提示Custom Build Step時(shí)出現(xiàn)了錯(cuò)誤。

分 析:因?yàn)?span lang="EN-US">log4cpp
在生成NTEventLogAppender.dll時(shí),需要連接NTEventLogCategories.mc文件。所以,項(xiàng) 目設(shè)置了自定義的生成步驟去生成NTEventLogAppender.dll。但從vc6的工程文件轉(zhuǎn)換時(shí),這些步驟卻沒(méi)有正確的轉(zhuǎn)換過(guò)來(lái)。從而出現(xiàn)上 述問(wèn)題。

解決方法:重新填寫Custom Build Step項(xiàng)。

其中,CommandLine填寫以下內(nèi)容:

if not exist $(OutDir) md $(OutDir)
"mc.exe" -h $(OutDir) -r $(OutDir) $(ProjectDir)..\$(InputName).mc
"RC.exe" -r -fo $(OutDir)\$(InputName).res $(OutDir)\$(InputName).rc
"link.exe" /MACHINE:IX86 -dll -noentry -out:$(OutDir)\NTEventLogAppender.dll $(OutDir)\$(InputName).res




適用范圍:log4cpp項(xiàng)目、log4cppDLL項(xiàng)目的DebugRelease配置。同時(shí),該方法適用于vs2003(vc7.1)

問(wèn)題:log4cppDLL項(xiàng)目編譯時(shí)會(huì)報(bào)8個(gè)連接錯(cuò)誤,提示符號(hào)std::_Tree找不到
解決方案:
include\log4cpp\FactoryParams.hh文件中的

const_iterator find(const std::string& t) const;


修改為

const_iterator find(const std::string& t) const { return storage_.find(t); }


后重新編譯

問(wèn)題:log4cppDLL項(xiàng)目編譯時(shí)會(huì)報(bào)1個(gè)連接錯(cuò)誤,提示符號(hào)log4cpp::localtime找不到
解決方案:
src\localtime.cpp文件添加到項(xiàng)目中重新編譯

 

3.       使用

http://www-128.ibm.com/developerworks/cn/linux/l-log4cpp/index.html

log4cpp應(yīng)用手冊(cè)

1
下載log4cpp并解壓。

2
打開\log4cpp-0.3.4b\msvc6\msvc6.dsw
 
編譯log4cpp工程Release版。
 
3
將編譯后的log4cpp.lib復(fù)制到VCLib目錄中。

4
將頭文件的目錄log4cpp-0.3.4b\include\log4cpp\
 
復(fù)制到VCInclude目錄.
  (
或者添加log4cpp-0.3.4b\includeVCInclude環(huán)境變量)

6
目標(biāo)工程包含庫(kù)
log4cpp.lib ws2_32.lib
(要選擇庫(kù)連接方式相同的庫(kù))

5
包含頭文件
日志記錄
#include <log4cpp/Category.hh>
日志配置讀取
#include <log4cpp/PropertyConfigurator.hh>
NDC
#include <log4cpp/NDC.hh>

9
日志代碼
每個(gè)類可以有自己的類別(log4cpp::Category)
可以在配置文件中添加該類別并設(shè)置日志級(jí)別。
所有的log4cpp::Category都使用同一個(gè)Appender
不同的Category配置為不同的日志級(jí)別,就可以控制日志輸出的范圍。
一般只使用四個(gè)記錄日志級(jí):DEBUGINFOWARNERROR
如:
log4cpp::Category::getRoot().info("Now run line %d", __LINE__);
或使用非根類別
log4cpp::Category::getInstance("MyCat").info("Now run line %d", __LINE__);

使用流:
log4cpp::Category::getInstance("main_cat").infoStream()
    << "This will show up as "
    << 1 << " emergency message"
    << log4cpp::CategoryStream::ENDLINE;
   

具體的函數(shù)說(shuō)明見api文檔.

7
讀取配置代碼
讀取log配置文件,應(yīng)在log4cpp靜態(tài)成員初始化之后。
如在CXXXApp::InitInstance()

    try
    {
        log4cpp::PropertyConfigurator::configure("log.ini");
    }
    catch (log4cpp::ConfigureFailure e)
    {
        log4cpp::Category::getRoot().warn(e.what());
    }

   

8
配置文件

[log4cpp]
# Set root category priority to DEBUG and its only appender to A1. 
# priority enum: "FATAL", "ALERT", "CRIT", "ERROR", "WARN",
#            "NOTICE", "INFO", "DEBUG", "NOTSET", "UNKNOWN"
rootCategory=DEBUG,A1
additivity.rootCategory=false
               
# define appender
appender.A1=RollingFileAppender
#appender.A1.threshold=NOTSET
appender.A1.fileName=XXXX.log
#appender.A1.maxFileSize=10485760
#appender.A1.maxBackupIndex=1
appender.A1.layout=PatternLayout
appender.A1.layout.ConversionPattern=[%d{%Y-%m-%d %H:%M:%S}](%p)%c %x: %m%n

appender.Info_Cons=ConsoleAppender
appender.Info_Cons.threshold=INFO
appender.Info_Cons.layout=PatternLayout
appender.Info_Cons.layout.ConversionPattern=[%d{%Y-%m-%d %H:%M:%S}](%p)%c %x: %m%n

# category for sub1
category.sub1=DEBUG,A1,Info_Cons
additivity.sub1=false
category.sub2=INFO,A1
additivity.sub1=false

# other categories

[others]
djkf=dksajf

 

 

最基本的使用方法;

手動(dòng)使用log4cpp的基本步驟如下:

  1. 實(shí)例化一個(gè)layout 對(duì)象;
  2. 初始化一個(gè)appender 對(duì)象;
  3. layout對(duì)象附著在appender對(duì)象上;
  4. 調(diào)用log4cpp::Category::getInstance("name"). 實(shí)例化一個(gè)category對(duì)象;
  5. appender對(duì)象附到category上(根據(jù)additivity的值取代其他appender或者附加在其他appender后)。
  6. 設(shè)置category的優(yōu)先級(jí);
// FileName: test_log4cpp1.cpp
// Test log4cpp by manual operation.
// Announce: use as your own risk.
// Compile : g++ -otest1 -llog4cpp test_log4cpp1.cpp
// Run     : ./test1
// Tested  : RedHat 7.2 log4cpp0.3.4b
// Author  : liqun (liqun@nsfocus.com)
// Data    : 2003-6-27
#include       "log4cpp/Category.hh"
#include       "log4cpp/FileAppender.hh"
#include       "log4cpp/BasicLayout.hh"
int main(int argc, char* argv[])
{
        // 1實(shí)例化一個(gè)layout 對(duì)象
        log4cpp::Layout* layout = 
        new log4cpp::BasicLayout();
        // 2. 初始化一個(gè)appender 對(duì)象
        log4cpp::Appender* appender = new 
              log4cpp::FileAppender("FileAppender",
              "./test_log4cpp1.log");
        // 3. layout對(duì)象附著在appender對(duì)象上
        appender->setLayout(layout);
        // 4. 實(shí)例化一個(gè)category對(duì)象
        log4cpp::Category& warn_log = 
        log4cpp::Category::getInstance("mywarn");
        // 5. 設(shè)置additivityfalse,替換已有的appender
        warn_log.setAdditivity(false);
        // 5. appender對(duì)象附到category
        warn_log.setAppender(appender);
        // 6. 設(shè)置category的優(yōu)先級(jí),低于此優(yōu)先級(jí)的日志不被記錄
        warn_log.setPriority(log4cpp::Priority::WARN);
        // 記錄一些日志
        warn_log.info("Program info which cannot be wirten");
        warn_log.debug("This debug message will fail to write");
        warn_log.alert("Alert info");
        // 其他記錄日志方式
        warn_log.log(log4cpp::Priority::WARN, "This will be a logged warning");
        log4cpp::Priority::PriorityLevel priority;
        bool this_is_critical = true;
        if(this_is_critical)
               priority = log4cpp::Priority::CRIT;
        else
               priority = log4cpp::Priority::DEBUG;
        warn_log.log(priority,"Importance depends on context");
        
        warn_log.critStream() << "This will show up << as " 
        << 1 << " critical message" 
        << log4cpp::CategoryStream::ENDLINE;
        // clean up and flush all appenders
        log4cpp::Category::shutdown();
        return 0;
}

 

從以上例子,并結(jié)合文檔,可以看出,實(shí)際上,其Loglog4cpp::Category::的一部分,而這些Category可以綁定不同的appender,以使得log輸出到不同的出口,如文件或終端或網(wǎng)絡(luò)等。實(shí)際記錄的時(shí)候是靠?jī)?yōu)先級(jí)來(lái)實(shí)現(xiàn)的,即優(yōu)先級(jí)低于目前的log所設(shè)定的優(yōu)先級(jí),則不需要記錄此信息,只有高于當(dāng)前優(yōu)先級(jí)的log信息才會(huì)被記錄。對(duì)于Category的層次,log4cpp::Category::getRoot()為最高層次,其它getInstance(“name”)得到的只有命名為”name”Category,應(yīng)該是Root()的子層。

Log4cpp的優(yōu)勢(shì)

1,提供應(yīng)用程序運(yùn)行上下文,方便跟蹤調(diào)試.這對(duì)開發(fā)人員很有幫助,特別是調(diào)試的時(shí)候,這一點(diǎn)log均可實(shí)現(xiàn).

2,把記錄的日志輸送到多種方式上.包括命令行,控制臺(tái)(調(diào)試的時(shí)候馬上就能看到哪里有問(wèn)題),文件(把完整的日志信息保存起來(lái),以利于整個(gè)系統(tǒng)的維護(hù),統(tǒng)計(jì)),回卷文件、內(nèi)存等.這一點(diǎn)是有特色的地方,因?yàn)槠渲挥幸粋€(gè)輸出內(nèi)容,但可綁定到多個(gè)輸出源,比如,你可以用控制臺(tái)輸出看到即時(shí)結(jié)果的同時(shí),將輸出的內(nèi)容存到文件中。或者你為了在測(cè)試的時(shí)候盡量不影響性能,可以將日志輸出到內(nèi)存,待關(guān)閉程序的時(shí)候再將其寫回到硬盤。

3,可以動(dòng)態(tài)控制日志記錄級(jí)別,在效率和功能中進(jìn)行調(diào)整.當(dāng)執(zhí)行等級(jí)小于設(shè)定等級(jí)時(shí)就不輸出.其設(shè)定了INFO,DEBUG,ALERT,EMERGE等不同的級(jí)別,當(dāng)當(dāng)前Log的級(jí)別低于設(shè)定的需記錄的級(jí)別時(shí),將忽略此信息,這個(gè)對(duì)記錄不同程度的信息詳細(xì)度有幫助,可以專注于特定的重要級(jí)別的錯(cuò)誤的調(diào)試。

4,所有配置可以通過(guò)配置文件進(jìn)行動(dòng)態(tài)調(diào)整.這個(gè)暫時(shí)還沒(méi)有使用,若要使用可參見 《便利的開發(fā)工具-log4cpp快速使用指南》(http://www.ibm.com/developerworks/cn/linux/l-log4cpp/index.html)

中第三節(jié)

5,現(xiàn)在log4**系列已經(jīng)開始支持其他語(yǔ)言了.Java(log4j),C++log4cpplog4cplus),Clog4c),pythonlog4p)等.好的東西容易被人借鑒和傳播.

Log4cpp有三個(gè)主要的組件:日志類別(Category)、輸出源( Appenders)和布局(Layouts)。這三種類型的組件一起工作使得開發(fā)員可以根據(jù)信息的類型和級(jí)別記錄它們,并且在運(yùn)行時(shí)控制這些信息的輸出格式和位置。

Feedback

# re: Log4cpp學(xué)習(xí)記錄  回復(fù)  更多評(píng)論   

2008-11-03 11:55 by 呵呵
謝謝了..............

只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


posts - 15, comments - 2, trackbacks - 0, articles - 29

Copyright © 美洲豹

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            久久www免费人成看片高清| 先锋影院在线亚洲| 欧美另类99xxxxx| 一区二区不卡在线视频 午夜欧美不卡在| 亚洲视频成人| 国产欧美日韩在线播放| 久久久久综合一区二区三区| 欧美激情中文字幕在线| 亚洲香蕉伊综合在人在线视看| 国产精品美女久久| 久久综合狠狠综合久久激情| 亚洲理论在线| 久久久久久欧美| 亚洲精品字幕| 国产女同一区二区| 欧美国产精品v| 午夜久久久久久| 欧美激情视频一区二区三区在线播放| 中文亚洲免费| 亚洲丰满在线| 国产精品一区三区| 欧美激情亚洲另类| 先锋影音久久| 日韩亚洲在线观看| 美女视频黄 久久| 亚洲欧美在线aaa| 亚洲欧洲精品一区二区三区不卡 | 亚洲欧美日韩一区在线观看| 在线观看一区二区视频| 欧美午夜免费影院| 免费国产一区二区| 欧美一区二区国产| 一区二区欧美精品| 亚洲国产婷婷综合在线精品 | 亚洲靠逼com| 欧美jizz19性欧美| 久久精品国产清高在天天线| 亚洲线精品一区二区三区八戒| 亚洲国产高清一区二区三区| 国产美女诱惑一区二区| 欧美日韩在线另类| 欧美xart系列高清| 久久久另类综合| 欧美在线播放| 性欧美暴力猛交69hd| 中文高清一区| 一区二区福利| 亚洲精品五月天| 亚洲欧洲日韩女同| 亚洲电影网站| 亚洲国产精品va| 欧美高清影院| 欧美激情1区2区| 女人香蕉久久**毛片精品| 久久久久国产精品www | 欧美电影打屁股sp| 久久在精品线影院精品国产| 久久久www| 久久九九久精品国产免费直播| 亚洲欧美在线一区| 午夜精品视频在线观看| 亚洲在线一区二区| 亚洲女同性videos| 亚洲欧美日韩一区二区三区在线观看 | 国产自产2019最新不卡| 国产日韩欧美精品综合| 国产精品专区第二| 国产日韩欧美综合一区| 国产亚洲一级高清| 黄色精品一区二区| 亚洲第一狼人社区| 亚洲精品欧美极品| 一本色道久久综合亚洲91| 99国产精品久久久久久久久久| 亚洲麻豆av| 亚洲一区二区久久| 久久高清福利视频| 久久影视精品| 亚洲国产另类久久久精品极度| 亚洲欧洲精品一区二区三区 | 中文精品视频| 亚洲欧美三级在线| 午夜在线成人av| 久久精品国产第一区二区三区| 久久天堂av综合合色| 欧美大片在线看| 亚洲美女在线观看| 亚洲欧美bt| 久久蜜桃资源一区二区老牛| 欧美激情国产高清| 国产精品久久久久一区二区三区共| 国产乱码精品1区2区3区| 极品日韩久久| 99re6热只有精品免费观看| 亚洲一区二区在线看| 久久久久久9| 亚洲国产精品一区二区www在线| 日韩一区二区久久| 久久黄色影院| 欧美日韩在线播放一区| 国产午夜精品一区二区三区欧美 | 蜜臀久久99精品久久久久久9| 亚洲大片在线| 亚洲欧美国产不卡| 免费看亚洲片| 国产精品亚洲人在线观看| 1204国产成人精品视频| 亚洲私人影院在线观看| 猫咪成人在线观看| 一区二区三区视频在线| 久久久精品午夜少妇| 欧美色视频日本高清在线观看| 国内精品嫩模av私拍在线观看 | 欧美人与禽猛交乱配视频| 国产色婷婷国产综合在线理论片a| 亚洲黄色免费| 欧美在线视频不卡| 亚洲欧洲精品一区二区三区| 欧美一区二区三区喷汁尤物| 欧美裸体一区二区三区| 极品av少妇一区二区| 亚洲欧美日韩成人高清在线一区| 欧美黄色免费| 欧美一站二站| 国产精品久久一区主播| 亚洲精品国产品国语在线app| 久久99在线观看| 一本色道久久88综合日韩精品| 免费看成人av| 精品动漫3d一区二区三区| 午夜精品视频在线观看| 亚洲精品在线观| 免费在线成人av| 精品成人一区二区三区| 久久av一区二区三区漫画| 一区二区精品在线观看| 欧美黄在线观看| 在线欧美亚洲| 久久全球大尺度高清视频| 亚洲伊人一本大道中文字幕| 欧美日韩在线观看一区二区三区| 亚洲国产精品久久久久| 久久综合中文| 久久精品人人做人人爽电影蜜月 | 影音先锋日韩精品| 久久精品免费电影| 亚洲欧美日韩在线不卡| 国产精品久久久久av| 亚洲性xxxx| 一区二区三区国产| 欧美午夜宅男影院在线观看| 亚洲免费av电影| 亚洲国产专区| 欧美精品在线观看| 亚洲免费av片| 日韩视频不卡| 欧美午夜精品久久久久久久| 一区二区日韩免费看| 日韩视频第一页| 欧美日韩一区在线观看| 亚洲视频电影在线| 亚洲视频精品| 国产精品亚洲激情| 久久都是精品| 久久久久国色av免费看影院| 在线免费高清一区二区三区| 蜜臀av在线播放一区二区三区| 久久精品1区| 亚洲国产精品久久久| 亚洲国产婷婷综合在线精品| 欧美日韩视频在线| 先锋亚洲精品| 久久精品国产69国产精品亚洲| 亚洲第一精品夜夜躁人人爽 | 久久视频在线免费观看| 亚洲国产欧美一区二区三区同亚洲| 欧美国产日韩a欧美在线观看| 欧美 日韩 国产 一区| 一本久久a久久精品亚洲| 亚洲午夜精品久久| 国内揄拍国内精品久久| 欧美激情一区二区三区成人 | 久久精品国产精品 | 亚洲免费在线精品一区| 国产亚洲永久域名| 亚洲国产精品精华液2区45| 欧美日韩免费视频| 久久国产精品一区二区| 免费成人你懂的| 亚洲综合国产| 久久先锋影音av| 在线亚洲伦理| 久久成人综合视频| 99视频精品全国免费| 亚洲欧美日韩精品一区二区 | 一本色道久久综合亚洲精品小说| 亚洲一区二区在线免费观看| 亚洲成在人线av| 亚洲无亚洲人成网站77777 | 欧美波霸影院|