日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

2、log4cxx的配置和使用

發(fā)布時間:2023/12/13 综合教程 38 生活家
生活随笔 收集整理的這篇文章主要介紹了 2、log4cxx的配置和使用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、log4cxx配置文件的組成部分

1.優(yōu)先級

Logger的語法:

log4j.rootLogger = [ level ] , appenderName, appenderName, …   

  其中,level 是日志記錄的優(yōu)先級,分為OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者自定義的級別。

  Log4j建議只使用四個級別,優(yōu)先級從高到低分別是ERROR、WARN、INFO、DEBUG。通過在這里定義的級別,可以控制到應(yīng)用程序中相應(yīng)級別的日志信息的開關(guān)。比如這里定義了INFO級別,則應(yīng)用程序中所有DEBUG級別的日志信息將不被打印出來。

  appenderName名字任意,用來標示日志信息輸出到哪里,可以同時指定多個。

2.輸出目的地

Appender的語法:

1 log4j.appender.appenderName = fully.qualified.name.of.appender.class         
2 log4j.appender.appenderName.option1 = value1            
3 …                
4 log4j.appender.appenderName.option = valueN 

其中,Log4j提供的appender有以下幾種:

1 org.apache.log4j.ConsoleAppender 控制臺            
2 org.apache.log4j.FileAppender 文件             
3 org.apache.log4j.DailyRollingFileAppender 每天產(chǎn)生一個日志文件          
4 org.apache.log4j.RollingFileAppender 文件大小到達指定尺寸的時候產(chǎn)生一個新的文件        
5 org.apache.log4j.WriterAppender 將日志信息以流格式發(fā)送到任意指定的地方

3.輸出格式

1 log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class        
2 log4j.appender.appenderName.layout.option1 = value1           
3 …                
4 log4j.appender.appenderName.layout.option = valueN     

Log4j提供的Layout有以下幾種:

1 org.apache.log4j.HTMLLayout 以HTML表格形式布局           
2 org.apache.log4j.PatternLayout 可以靈活地指定布局模式           
3 org.apache.log4j.SimpleLayout 包含日志信息的級別和信息字符串          
4 org.apache.log4j.TTCCLayout 包含日志產(chǎn)生的時間、線程、類別等等信息     

Log4j采用類似C語言中的printf函數(shù)的打印格式格式化日志信息,打印參數(shù)如下:

1 %m 輸出代碼中指定的消息              
2 %p 輸出優(yōu)先級,即DEBUG,INFO,WARN,ERROR,F(xiàn)ATAL           
3 %r 輸出自應(yīng)用啟動到輸出該log信息耗費的毫秒數(shù)            
4 %c 輸出所屬的類目,通常就是所在類的全名            
5 %t 輸出產(chǎn)生該日志事件的線程名             
6 %n 輸出一個回車換行符,Windows平臺為“/r/n”,Unix平臺為“/n”          
7 %d 輸出日志時間點的日期或時間,默認格式為ISO8601,也可以在其后指定格式,比如:
    %d{yyy MMM dd HH:mm:ss,SSS},輸出2008年11月14日 15:16:17,890 8 %l 輸出日志事件的發(fā)生位置,包括類目名、發(fā)生的線程,以及在代碼中的行數(shù)。

二、配置實例

log4cxx.properties log4cxx配置文件

 1 #設(shè)置日志level為INFO,fa為文件輸出對象,ca為控制臺輸出對象
 2 log4j.rootLogger=INFO,fa,ca
 3 #設(shè)置日志對象
 4 log4j.logger.console=INFO,ca
 5 log4j.logger.file=INFO,fa
 6 #不向默認對象(rootLogger)輸出,因此信息只能輸出到文件
 7 log4j.additivity.file=false
 8 
 9 #**************************  
10 #控制臺,同時也會輸出到默認輸出對象  
11 #**************************
12 log4j.appender.ca=org.apache.log4j.ConsoleAppender  
13 log4j.appender.ca.layout=org.apache.log4j.PatternLayout  
14 log4j.appender.ca.layout.ConversionPattern=[%-5p][%d] : %m%n 
15 
16 #**************************  
17 #設(shè)置日志文件信息,比如大小,時間格式
18 #**************************  
19 log4j.appender.fa=org.apache.log4j.DailyRollingFileAppender  
20 log4j.appender.fa.File=./log/today.log  
21 log4j.appender.fa.Append=fasle  
22 log4j.appender.fa.MaxFileSize=10MB  
23 log4j.appender.fa.MaxBackupIndex=1000  
24 log4j.appender.fa.DatePattern=yyyy-MM-dd  
25 log4j.appender.fa.layout=org.apache.log4j.PatternLayout  
26 log4j.appender.fa.layout.ConversionPattern=[%-5p][%d] : %m%n

  上面是一個常規(guī)配置,總共有兩個輸出對象fa和ca,分別表示輸出到文件和輸出到控制臺。我又配置了三個代碼中需要的對象,分別是:

  (1)rootLogger 默認對象,引用了fa和ca,即輸出到控制臺和文件;

 ?。?)file 只引用到fa,輸出到文件,但file多了一項配置log4j.additivity.file=false,這是不向默認對象(rootLogger)輸出,因此信息只能輸出到文件;

  (3)console 只引用到ca,輸出到控制臺,但additivity的默認值是true,也就是信息除了輸出到ca外,還會輸出到rootLogger,因此控制臺會有兩次的信息輸出和一次的文件輸出。

三、使用實例

下面是一個使用log4CXX的實例main.cpp

 1 #include <log4cxx/logger.h>
 2 #include <log4cxx/basicconfigurator.h>
 3 #include <log4cxx/helpers/exception.h>
 4 #include <log4cxx/propertyconfigurator.h>
 5 
 6 using namespace log4cxx;
 7 using namespace log4cxx::helpers;
 8 
 9 LoggerPtr logger_file(Logger::getLogger("file"));//獲取配置文件中file對應(yīng)的句柄
10 LoggerPtr logger_console(Logger::getLogger("console"));//獲取配置文件中console對應(yīng)的句柄
11 
12 int main(){
13     PropertyConfigurator::configure("./log4cxx.properties");//加載配置文件,下面會細說
14     LOG4CXX_INFO(logger_file,"This is a test");
15     LOG4CXX_INFO(logger_console, "hello log4cxx");   
16   
17     return 0;
18 }

編譯執(zhí)行:

1 g++ main.cpp -o main -llog4cxx
2 ./mai

執(zhí)行結(jié)果:

這是在終端顯示的內(nèi)容,同時在當(dāng)前目錄下會產(chǎn)生一個log文件夾,,里面會有一個taday.log,cat一下看一下輸出:

到這里log4cxx已經(jīng)完成了初步的配置和使用。

總結(jié)

以上是生活随笔為你收集整理的2、log4cxx的配置和使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。