首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Perl:出现未处理的错误时,Log4Perl调用log4perl

Perl:出现未处理的错误时,Log4Perl调用log4perl
EN

Stack Overflow用户
提问于 2012-10-08 16:20:39
回答 1查看 248关注 0票数 2

在log4Perl中有没有一种方法可以强制我的程序即使在eval子句之外也记录fatal?我想实现在任何未处理的程序终止的情况下调用log4perl。最好是在我的标准模块中添加相关的错误处理程序,该模块与我的所有Perl程序一起加载。

Perl版本目前是5.8,但我很快就会升级。

这是给定答案的测试代码。我在屏幕上既没有看到骰子,也没有创建die.txt。

代码语言:javascript
复制
 use Log::Log4perl qw(get_logger);
$a->test();
$SIG{__DIE__} = sub {
 warn "DIE";
 open DIE,">die.txt";
 print DIE "died\n";
 close DIE;
};
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-11 18:22:47

看起来像是常见问题解答How can I make sure my application logs a message when it dies unexpectedly?

代码语言:javascript
复制
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;
    }
    local $Log::Log4perl::caller_depth =
          $Log::Log4perl::caller_depth + 1;
    my $logger = get_logger("");
    $logger->fatal(@_);
    die @_; # Now terminate really
};

有关更多信息,请参阅perlipc

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12777789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档