小编Fre*_*die的帖子

如何将Logl警告捕获到Log4perl日志中?

Log4perl是一个很棒的日志工具.

警告编译也是一个必不可少的工具.

但是,当Perl脚本作为守护程序运行时,Perl警告会打印到STDERR中,没有人可以看到它们,而不会打印到相关程序的Log4perl日志文件中.

有没有办法将Perl警告捕获到Log4perl日志中?

例如,此代码将很好地记录到日志文件中,但是如果它作为守护程序运行,则Perl警告将不会包含在日志中:

#!/usr/bin/env perl
use strict;
use warnings;

use Log::Log4perl qw(get_logger);

# Define configuration
my $conf = q(
                log4perl.logger                    = DEBUG, FileApp
                log4perl.appender.FileApp          = Log::Log4perl::Appender::File
                log4perl.appender.FileApp.filename = test.log
                log4perl.appender.FileApp.layout   = PatternLayout
);

# Initialize logging behaviour
Log::Log4perl->init( \$conf );

# Obtain a logger instance
my $logger = get_logger("Foo::Bar");
$logger->error("Oh my, an error!");

$SIG{__WARN__} = sub {
    #local $Log::Log4perl::caller_depth = $Log::Log4perl::caller_depth + 1;
    $logger->warn("WARN @_");
};

my $foo = 100;
my $foo = 44;
Run Code Online (Sandbox Code Playgroud)

这仍然打印到STDERR: …

perl log4perl

13
推荐指数
2
解决办法
3322
查看次数

标签 统计

log4perl ×1

perl ×1