Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
可以使用Perl';s Log::Log4perl';是否可以在不更新配置的情况下动态更改日志级别?_Perl_Apache_Logging_Mod Perl_Log4perl - Fatal编程技术网

可以使用Perl';s Log::Log4perl';是否可以在不更新配置的情况下动态更改日志级别?

可以使用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 $

我有一个在mod_perl下运行的Mason模板,它使用Log::Log4perl

我想更改特定appender的日志级别,但是更改配置太麻烦了,因为它必须经过部署过程才能生效


有没有办法在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});

好的,但是如何指定要更改日志级别的包?