可以使用Perl';s Log::Log4perl';是否可以在不更新配置的情况下动态更改日志级别?
我有一个在mod_perl下运行的Mason模板,它使用Log::Log4perl 我想更改特定appender的日志级别,但是更改配置太麻烦了,因为它必须经过部署过程才能生效可以使用Perl';s Log::Log4perl';是否可以在不更新配置的情况下动态更改日志级别?,perl,apache,logging,mod-perl,log4perl,Perl,Apache,Logging,Mod Perl,Log4perl,我有一个在mod_perl下运行的Mason模板,它使用Log::Log4perl 我想更改特定appender的日志级别,但是更改配置太麻烦了,因为它必须经过部署过程才能生效 有没有办法在Apache启动后,在运行时更改appender的日志级别,而不更改配置文件,然后使该更改影响任何新的Apache线程?如果您已从导入日志级别常量,则可以执行以下操作: $logger->level($ERROR); # one of DEBUG, INFO, WARN, ERROR, FATAL $
有没有办法在Apache启动后,在运行时更改appender的日志级别,而不更改配置文件,然后使该更改影响任何新的Apache线程?如果您已从导入日志级别常量,则可以执行以下操作:
$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)代码>
为了使其更具动态性,可以为Appender名称和级别传入一个变量
%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});
好的,但是如何指定要更改日志级别的包?