使用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());
posted on 2019-11-04 16:45 merlinzjl 阅读(5928) 评论(0) 编辑 收藏 举报