【发布时间】:2013-01-14 10:23:26
【问题描述】:
在 mod_perl 下运行脚本时,如何确保看到 Perl 的所有警告和错误消息? (Apache/2.2.16 (Debian) [...] mod_perl/2.0.4 Perl/v5.10.1)
我觉得我做的一切都是正确的:我在 httpd.conf 中有“PerlWarn On”,我有
use strict;
use warnings FATAL => 'all';
在我所有的 Perl 文件中,当我自己使用 warn() 时,我会在 /var/log/apache2/error.log 中看到结果。
但是很多消息仍然没有收到。例如,“无法定位对象方法”永远不会出现在日志中。脚本就这样死了,我必须自己弄清楚在哪里以及为什么。
我可能忽略了什么?
【问题讨论】:
-
您的某些脚本中是否覆盖了
$SIG{__WARN__}和$SIG{__DIE__}? -
不,我没有接触任何信号处理。
-
请求由 Apache2::Controller::Dispatch::Simple 处理,控制器是 Apache2::Controller+Apache2::Request,其余的几乎都是我自己的代码。没有 CGI 模块。
-
在发生问题的模块中将
use warnings FATAL => 'all';替换为use warnings;会使警告出现在error.log 中。FATAL => all是否有可能使脚本在有机会打印到 STDERR 之前死掉?
标签: perl logging apache2 warnings mod-perl2