2011-04-19 37 views
2

我与log4perl试验和在一个奇怪的问题就来了:log4perl:logcluck不断显示

配置我log4perl记录一切之上DEBUG级别,我要输出的一切文件,但是,我只想在屏幕上显示错误或致命错误。所以这是我的配置文件:

############################################################################################################################# 
## Logger                             ## 
############################################################################################################################# 
log4perl.logger          = DEBUG, fileLog, screenLog 

############################################################################################################################# 
## File Log (all levels)                         ## 
############################################################################################################################# 
log4perl.appender.fileLog      = Log::Log4perl::Appender::File 
log4perl.appender.fileLog.filename    = error_log 
log4perl.appender.fileLog.mode     = append 
log4perl.appender.fileLog.layout    = Log::Log4perl::Layout::PatternLayout 
log4perl.appender.fileLog.layout.ConversionPattern = %d [%p] [%F line %L] %m%n 

############################################################################################################################# 
## Screen Log (only error level or higher)                     ## 
############################################################################################################################# 
log4perl.appender.screenLog      = Log::Log4perl::Appender::Screen 
log4perl.appender.screenLog.Threshold    = ERROR          
log4perl.appender.screenLog.layout     = Log::Log4perl::Layout::PatternLayout 
log4perl.appender.screenLog.layout.ConversionPattern = %d [%p] [%F line %L] %m%n 

通知阈值设置为错误屏输出!这适用于常规的$ logger-> error和$ logger-> warn命令,这些错误会输出到文件和屏幕,只会向文件发出警告。

但是,当我尝试$ logger-> logcluck(“cluck”)时,即使cluck处于WARN级别,它仍然会输出到屏幕!

奇怪的是,如果我把我的文件门槛为ERROR它并不在我的文件中显示出来,如果我把我的总体水平为ERROR它没有在屏幕上任意显示..

任何想法,为什么这正在发生 ?

回答

2

这是因为logcluck可以做记录(作为警告)和咯咯(鲤鱼:: cluck)。而后者将其打印到控制台。

如果你希望只在日志中出现cluck,我不确定有没有一个答案,因为缺乏调用Carp :: longmess自己,并记录下来。

+0

嗯是的,我在看模块文件的时候也看到了这个,这对log4perl来说是件奇怪的事情,为什么它会在日志记录后调用Carp :: cluck?有点击败了控制你的记录.. – Pmarcoen 2011-04-19 15:34:51