【发布时间】:2014-07-22 07:46:38
【问题描述】:
我想从一个从 mod_perl 处理程序调用但没有请求对象 ($r) 的子例程记录到 Apache 日志文件。
sub handler {
my ($r) = shift;
...
Common::subroutine_that_also_logs();
...
}
package Common;
sub subroutine_that_also_logs {
...
# $r->log->info('cannot do this')
...
}
虽然使用 print STDERR 或 warn 有效,但我想使用 Apache2::Log 在日志中获取额外的请求信息:-
[Fri May 30 16:12:37 2014] [info] [client 123.123.123.123] cannot do this
而不仅仅是
cannot do this
我想避免处理程序中的全局初始化,因为这意味着更新数百个处理程序:-
my $globalr;
sub handler {
$globalr = shift;
...
Common::subroutine_that_also_logs();
}
package Common;
sub subroutine_that_also_logs {
...
$globalr->log->info('can try this')
...
}
我已经设置了一个PerlFixupHandler 用于初始化$globalr,但我想知道是否有更好的方法或者$r 是否可以通过其他方式直接使用。
【问题讨论】:
标签: apache perl apache2 mod-perl