log4cplus基本用法


說起日志系統,不得不提大名鼎鼎的Log4j。特別是使用Java的人們,能夠說是無人不知無人不曉無人不用。

Log4j以其簡單的使用方式(引入一個jar包。一行代碼就可以調用)。靈活(可通過配置文件任意配置),功能強大(多個級別。可配置多個輸出目的地,Console,File。系統日志。遠端的LogServer等等,可訂制日志格式,自己主動產生,刪除日志文件)等等等等特性,一直是Java日志系統的首選。

 

1.Log4j的C++版本號Log4cplus

上面說到,日志在如今的系統里不可缺少。Java有功能強大的Log4j能夠使用,作為最重要變成語言之中的一個的C++有什么選擇呢?

幸運的是。有一些大牛非常早之前就發現了這個問題,他們仿照Log4J。使用C++語言開發了一套日志系統Log4cplus,Log4cplus的目的非常明白。打造C++版的Log4j。並且最重要的是Log4cplus是開源的。

2.使用簡單介紹

1)下載http://sourceforge.net/projects/log4cplus/

2)Log4j是一個C++庫,編譯以后就可以使用。同一時候log4cplus支持windows和linux:

      windows下:打開根文件夾下的msvc10以下的vsproject。編譯就可以。

      Linux下:configure, make

3)使用

   a)最簡單的使用方式

?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <log4cplus/logger.h> 
#include <log4cplus/configurator.h> 
#include <iomanip> 
   
using namespace log4cplus; 
   
int 
main() 
     BasicConfigurator config; 
     config.configure(); 
   
     Logger logger = Logger::getInstance( "main" ); 
     LOG4CPLUS_WARN(logger,  "Hello, World!" ); 
     return
}
b)可訂制的方式
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/*    嚴格實現步驟1-6,appender輸出到屏幕, 當中的布局格式和LogLevel后面會詳解。*/ 
#include <log4cplus logger.h=""></log4cplus> 
#include <log4cplus consoleappender.h=""></log4cplus> 
#include <log4cplus layout.h=""></log4cplus>    
using namespace log4cplus; 
using namespace log4cplus::helpers;    
int main(){ 
     /* step 1: Instantiate an appender object */     
     SharedObjectPtr _append ( new ConsoleAppender());     
     _append->setName( "append for test" );    
     /* step 2: Instantiate a layout object */     
     std::string pattern =  "%d{%m/%d/%y %H:%M:%S}  - %m [%l]%n" ;     
     std::auto_ptr _layout( new PatternLayout(pattern));    
     /* step 3: Attach the layout object to the appender */     
     _append->setLayout( _layout );    
     /* step 4: Instantiate a logger object */     
     Logger _logger = Logger::getInstance( "test" );    
     /* step 5: Attach the appender object to the logger  */    
     _logger.addAppender(_append);    
     /* step 6: Set a priority for the logger  */     
     _logger.setLogLevel(ALL_LOG_LEVEL);    
      /* log activity */     
     LOG4CPLUS_DEBUG(_logger,  "This is the FIRST log message..." )     
    sleep(1);     
    LOG4CPLUS_WARN(_logger,  "This is the SECOND log message..." )    
    return 0; 
}

4)配置

Log4cplus配置基本與log4J同樣。

以下是一個樣例

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
log4cplus.rootLogger=DEBUG, STDOUT, ALL_MSGS 
   
   
log4cplus.appender.STDOUT=log4cplus::ConsoleAppender 
log4cplus.appender.STDOUT.layout=log4cplus::PatternLayout 
#log4cplus.appender.STDOUT.layout.ConversionPattern=%d{%m/%d/%y %H:%M:%S} [%t] %-5p %c{2} %%%x%% - %m [%l]%n 
log4cplus.appender.STDOUT.layout.ConversionPattern=[%-5p %d{%y-%m-%d %H:%M:%S}] [%l]%n%m%n%n 
   
   
#設置日志追加到文件尾 
log4cplus.appender.ALL_MSGS=log4cplus::RollingFileAppender   
   
#設置日志文件大小 
log4cplus.appender.ALL_MSGS.MaxFileSize=100MB 
   
#設置生成日志最大個數 
log4cplus.appender.ALL_MSGS.MaxBackupIndex=10 
   
#設置輸出日志路徑 
log4cplus.appender.ALL_MSGS.File= log /test. log 
log4cplus.appender.ALL_MSGS.layout=log4cplus::PatternLayout 
#設置日志打印格式 
#log4cplus.appender.ALL_MSGS.layout.ConversionPattern=|%D:%d{%Q}|%p|%t|%l|%m|%n 
log4cplus.appender.ALL_MSGS.layout.ConversionPattern=[%-5p %d{%y-%m-%d %H:%M:%S}] [%l]%n%m%n%n 
#匹配同樣日志級別,僅僅有debug日志才輸入到該文件里 
#log4cplus.appender.ALL_MSGS.filters.1=log4cplus::spi::LogLevelMatchFilter 
#log4cplus.appender.DEBUG_MSGS.filters.1.LogLevelToMatch=DEBUG 
#log4cplus.appender.DEBUG_MSGS.filters.1.AcceptOnMatch=true 
#log4cplus.appender.DEBUG_MSGS.filters.2=log4cplus::spi::DenyAllFilter


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM