Как я могу зарегистрировать часовой пояс с помощью Log::Log4perl?

Мы используем Log::Log4perl для регистрации текущей даты следующим образом:

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

Есть ли способ также зарегистрировать часовой пояс?


person Deepanshu Arora    schedule 31.08.2016    source источник


Ответы (1)


Форматы даты в 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; как правило, использовать недокументированные функции — плохая идея, но в этом случае похоже, что автор просто забыл обновить документацию в одном модуле, когда функции были добавлены в другой. Я отправил заявку на обновление документации.

person ThisSuitIsBlackNot    schedule 31.08.2016