gpt4 book ai didi

perl - 使用 Log::Log4perl 记录所有意外错误

转载 作者:行者123 更新时间:2023-12-01 01:54:32 28 4
gpt4 key购买 nike

我想为我的 Perl 脚本生成一个日志。但是当我使用 Log::Log4perl我如何捕获脚本在任何情况下都会抛出的错误。如何将其记录到日志文件中。目前,我在诸如 ERROR()、DEBUG() 等各种标签中明确写入的内容是唯一被打印到日志文件的标签。

有没有办法使用 Log::Log4perl 来做到这一点。

例如在下面的代码中:

use strict;
use warnings;
use Log::Log4perl qw(:easy);

Log::Log4perl->easy_init( { level => $DEBUG,
file => ">>test.log" });

my $logger = Log::Log4perl->get_logger();

$logger->fatal( "This is", " fatal");
$logger->error( "This is error");
$logger->warn( "This is warn");
$logger->info( "This is info");
$logger->debug( "This is debug");
$logger->trace( "This is trace");

my $a = 10;

my $b = $a/0;

除以零错误不会记录到脚本中。我的原始脚本太复杂,无法检查每个错误,因此还需要将 stderr 上的错误记录到日志文件中的内容。

最佳答案

use Log::Log4perl qw(get_logger);

$SIG{__DIE__} = sub {
if($^S) {
# We're in an eval {} and don't want log
# this message but catch it later
return;
}
$Log::Log4perl::caller_depth++;
my $logger = get_logger("");
$logger->fatal(@_);
die @_; # Now terminate really
};

另见 Log4perl - how can I make sure my application logs a message when it dies unexpectedly?

关于perl - 使用 Log::Log4perl 记录所有意外错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41587105/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com