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 に答える