使用Log4Cplus+配置文件打印日志


開發環境:win7+VS2015 msvc14

版本:log4CPlus1.2.1

API參考:https://log4cplus.sourceforge.io/docs/html/index.html

 

前兩天工作中使用到了Log4Cplus來記錄程序日志,下面總結下通過配置文件來使用Log4Cplus庫。

 

基本要求:日志文件按天命名,每天生成一個文件。

配置文件:

log4cplus.rootLogger=ALL, LegendPrint_Run_LOG

 

//指定append類型,因為我們這需要按天來生成,同時文件名也要可以按時間來命名

//所以選擇TimeBasedRollingFileAppender

log4cplus.appender.LegendPrint_Run_LOG = log4cplus::TimeBasedRollingFileAppender

 

//指定文件路徑名,可以是絕對路徑也可以是相對路徑,可以使用時間匹配符來動態定義文件名。log4Cplus會根據你使用到的時間自動創建文件。比如,你的文件名是由年月構成,那每個月都會生成新的文件。

log4cplus.appender.LegendPrint_Run_LOG.FilenamePattern= log\ %d{yyyy-MM-dd}.log

 

//設置為true表示向日志文件中追加信息而不是截斷。

log4cplus.appender.LegendPrint_Run_LOG.Append = true

 

//設置最大的文件數,超過這個數值刪除時間最久的文件。

log4cplus.appender.LegendPrint_Run_LOG.MaxHistory = 999

 

//當設置為true表示每一次有append event事件,輸出流就會被刷新到文件中。

log4cplus.appender.LegendPrint_Run_LOG.ImmediateFlush = true

 

//默認值為true關閉的時候回滾到一個新的文件中,有bug,我們設置為false,不使用這個功能。

log4cplus.appender.LegendPrint_Run_LOG.RollOnClose = false

 

//如果為true,那么如果指定的日志路徑名中如果有文件夾不存在,則會創建文件夾。

log4cplus.appender.LegendPrint_Run_LOG.CreateDirs = true

 

//指定消息輸出的格式

log4cplus.appender.LegendPrint_Run_LOG.layout = log4cplus::PatternLayout

log4cplus.appender.LegendPrint_Run_LOG.layout.ConversionPattern =  %D{%Y-%m-%d %H:%M:%S,%q}: %-5p %m%n

 

//指定消息輸出的級別,這邊使用的是Range,指定范圍,在這個范圍內都可以使用。

log4cplus.appender.LegendPrint_Run_LOG.filters.1 = log4cplus::spi::LogLevelRangeFilter

log4cplus.appender.LegendPrint_Run_LOG.filters.1.LogLevelMin = TRACE

log4cplus.appender.LegendPrint_Run_LOG.filters.1.LogLevelMax = FATAL

//這里我們還可以使用LogLevelMatchFilter來指定消息輸出級別

//log4cplus.appender.LegendPrint_Error_LOG.filters.1=log4cplus::spi::LogLevelMatchFilter

//log4cplus.appender.LegendPrint_Error_LOG.filters.1.LogLevelToMatch=ERROR

//true表示如果匹配了filter指定的范圍則輸出,如果是false則反之。

log4cplus.appender.LegendPrint_Run_LOG.filters.1.AcceptOnMatch = true

//表示清空過濾器的設置,這邊設置的順序和執行的順序是相反的,即log4Cplus會先清空//然后再設置filter的級別。

log4cplus.appender.LegendPrint_Run_LOG.filters.2 = log4cplus::spi::DenyAllFilter

 

使用時:

log4cplus::PropertyConfigurator::doConfigure(“配置文件.properties”);

logger = log4cplus::Logger::getRoot();//指定使用root

 

再看一個用例:

#配置文件(其它日志級別配置相同):

log4cplus.logger.console=TRACE,logConsole

log4cplus.logger.root=TRACE,ERROR_MSGS, DEBUG_MSGS, INFO_MSGS

<br>#不向默認對象(rootLogger)輸出,因此信息只能輸出到文件

log4cplus.additivity.file=false

 

###############################CONSOLE##########################################

log4cplus.appender.logConsole=log4cplus::ConsoleAppender

log4cplus.appender.logConsole.Encoding=utf-8

log4cplus.appender.logConsole.layout=log4cplus::PatternLayout

log4cplus.appender.logConsole.layout.ConversionPattern=[%D{%Y-%m-%d %H:%M:%S}] %-5p %m %n

 

################################DEBUG####################################

#設置日志追加到文件尾

log4cplus.appender.DEBUG_MSGS=log4cplus::TimeBasedRollingFileAppender

log4cplus.appender.DEBUG_MSGS.FilenamePattern=debug.%d{yyyyMMdd}.log

log4cplus.appender.ERROR_MSGS.Schedule=DAILY

log4cplus.appender.ERROR_MSGS.MaxHistory=365

 

log4cplus.appender.DEBUG_MSGS.Append=true

log4cplus.appender.DEBUG_MSGS.RollOnClose=false

log4cplus.appender.DEBUG_MSGS.CreateDirs=true

 

#設置日志文件大小

log4cplus.appender.DEBUG_MSGS.MaxFileSize=10MB

 

#設置生成日志最大個數

log4cplus.appender.DEBUG_MSGS.MaxBackupIndex=5

log4cplus.appender.DEBUG_MSGS.Encoding=utf-8

log4cplus.appender.DEBUG_MSGS.layout=log4cplus::PatternLayout

 

#設置日志打印格式

log4cplus.appender.DEBUG_MSGS.layout.ConversionPattern=[%D{%Y-%m-%d %H:%M:%S}] %-5p %m %n

 

#匹配相同日志級別,只有wx_uservedio日志才輸入到該文件中

log4cplus.appender.DEBUG_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

 

################################ERROR####################################

#設置日志追加到文件尾

log4cplus.appender.ERROR_MSGS=log4cplus::TimeBasedRollingFileAppender

log4cplus.appender.ERROR_MSGS.FilenamePattern=error.%d{yyyyMMdd}.log

log4cplus.appender.ERROR_MSGS.Schedule=DAILY

log4cplus.appender.ERROR_MSGS.MaxHistory=365

 

log4cplus.appender.ERROR_MSGS.Append=true

log4cplus.appender.ERROR_MSGS.RollOnClose=false

log4cplus.appender.ERROR_MSGS.CreateDirs=true

 

#設置日志文件大小

log4cplus.appender.ERROR_MSGS.MaxFileSize=10MB

 

#設置生成日志最大個數

log4cplus.appender.ERROR_MSGS.MaxBackupIndex=5

log4cplus.appender.ERROR_MSGS.Encoding=utf-8

log4cplus.appender.ERROR_MSGS.layout=log4cplus::PatternLayout

 

#設置日志打印格式

log4cplus.appender.ERROR_MSGS.layout.ConversionPattern=[%D{%Y-%m-%d %H:%M:%S}] %-5p %m%n

 

#匹配相同日志級別,只有wx_uservedio日志才輸入到該文件中

log4cplus.appender.ERROR_MSGS.filters.1=log4cplus::spi::LogLevelMatchFilter

log4cplus.appender.ERROR_MSGS.filters.1.LogLevelToMatch=ERROR

log4cplus.appender.ERROR_MSGS.filters.1.AcceptOnMatch=true

log4cplus.appender.ERROR_MSGS.filters.2=log4cplus::spi::DenyAllFilter

 

################################INFO####################################

#設置日志追加到文件尾

log4cplus.appender.INFO_MSGS=log4cplus::TimeBasedRollingFileAppender

log4cplus.appender.INFO_MSGS.FilenamePattern=info.%d{yyyyMMdd}.log

log4cplus.appender.INFO_MSGS.Schedule=DAILY

log4cplus.appender.INFO_MSGS.MaxHistory=365

 

log4cplus.appender.INFO_MSGS.Append=true

log4cplus.appender.INFO_MSGS.RollOnClose=false

log4cplus.appender.INFO_MSGS.CreateDirs=true

 

#設置日志文件大小

log4cplus.appender.INFO_MSGS.MaxFileSize=10MB

 

#設置生成日志最大個數

log4cplus.appender.INFO_MSGS.MaxBackupIndex=5

log4cplus.appender.INFO_MSGS.Encoding=utf-8

log4cplus.appender.INFO_MSGS.layout=log4cplus::PatternLayout

 

#設置日志打印格式

log4cplus.appender.INFO_MSGS.layout.ConversionPattern=[%D{%Y-%m-%d %H:%M:%S}] %-5p %m %n   

 

#匹配相同日志級別,只有INFO日志才輸入到該文件中

log4cplus.appender.INFO_MSGS.filters.1=log4cplus::spi::LogLevelMatchFilter

log4cplus.appender.INFO_MSGS.filters.1.LogLevelToMatch=INFO

log4cplus.appender.INFO_MSGS.filters.1.AcceptOnMatch=true

log4cplus.appender.INFO_MSGS.filters.2=log4cplus::spi::DenyAllFilter

 

使用時:

Logger LogConsole = Logger::getInstance(LOG4CPLUS_TEXT("console"));

Logger LogRoot = Logger::getInstance(LOG4CPLUS_TEXT("root"));

 

打印日志時使用 LOG4CPLUS_TRACE\DEBUG\INFO\WARN等宏函數打印日志。

std::stringstream  _ss;

LOG4CPLUS_TRACE(LogConsole , _ss.str().c_str());


免責聲明!

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



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