我有一個運行在mod_perl下的Mason模板,它使用Log :: Log4perl。可以在不更新配置的情況下動態更改Perl的Log :: Log4perl的日誌級別嗎?
我想更改特定appender的日誌級別,但更改配置非常尷尬,因爲它必須通過我們的部署過程才能生效。
有沒有辦法在運行時更改appender的日誌級別,在Apache啓動之後,不更改配置文件,然後讓該更改影響任何新的Apache線程?
我有一個運行在mod_perl下的Mason模板,它使用Log :: Log4perl。可以在不更新配置的情況下動態更改Perl的Log :: Log4perl的日誌級別嗎?
我想更改特定appender的日誌級別,但更改配置非常尷尬,因爲它必須通過我們的部署過程才能生效。
有沒有辦法在運行時更改appender的日誌級別,在Apache啓動之後,不更改配置文件,然後讓該更改影響任何新的Apache線程?
如果您已經從Log::Log4perl::Level
進口的日誌級別常量,那麼你可以做這樣的事情:
$logger->level($ERROR); # one of DEBUG, INFO, WARN, ERROR, FATAL
$logger->more_logging($delta); # Increase log level by $delta levels,
# a positive integer
$logger->less_logging($delta); # Decrease log level by $delta levels.
這似乎有點哈克給我,但它的工作原理:
$Log::Log4perl::Logger::APPENDER_BY_NAME{SCREEN}->threshold($DEBUG);
,並使其更有活力,你可以在該追加程序名稱和級別變量傳遞。
%LOG4PERL_LEVELS =
(
OFF =>$OFF,
FATAL =>$FATAL,
ERROR =>$ERROR,
WARN =>$WARN,
INFO =>$INFO,
DEBUG =>$DEBUG,
TRACE =>$TRACE,
ALL =>$ALL
);
$Log::Log4perl::Logger::APPENDER_BY_NAME{$appender_name}->threshold($LOG4PERL_LEVELS{$new_level});
好吧,但我將如何指定我想更改日誌級別的包? – 2011-06-13 12:53:56