3

我们使用Log::Log4perl来记录当前日期,如下所示:

log4perl.appender.perllog.layout.ConversionPattern=%d{yyyyMMdd.hhmmss:}-%P-%H-%p{2}-%m

有没有办法记录时区?

4

1 回答 1

5

Log::Log4perl::Layout::PatternLayout中的日期格式由Log::Log4perl::DateFormat 实现,它支持Z时区偏移量说明符:

use strict;
use warnings 'all';

use Log::Log4perl;

my $conf = <<'CONF';
    log4perl.logger.Foo = INFO, perllog

    log4perl.appender.perllog          = Log::Log4perl::Appender::File
    log4perl.appender.perllog.filename = foo.log
    log4perl.appender.perllog.layout   = Log::Log4perl::Layout::PatternLayout
    log4perl.appender.perllog.layout.ConversionPattern = \
        %d{yyyyMMdd.hhmmssZ:}-%P-%H-%p{2}-%m
CONF

Log::Log4perl::init(\$conf);

my $logger = Log::Log4perl->get_logger('Foo');
$logger->warn('Hello, timezone!');

输出:

20160831.094036-0600:-28223-www.example.com-WA-Hello, timezone!

这在 Log::Log4perl::Layout::PatternLayout 中没有记录;通常使用未记录的功能是一个坏主意,但在这种情况下,当功能添加到另一个模块时,作者似乎只是忘记更新一个模块中的文档。我已经提交了一张票来更新文档。

于 2016-08-31T15:47:37.423 回答