2016-08-31 1 views

Répondre

4

Les formats de date dans Log::Log4perl::Layout::PatternLayout sont mises en œuvre par Log::Log4perl::DateFormat , qui soutient le spécificateur Z pour décalage horaire:

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!'); 

Sortie:

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

Ce n'est pas documenté dans Log :: Log4perl :: Mise en page :: PatternLayout; en général, c'est une mauvaise idée d'utiliser des fonctionnalités non documentées, mais dans ce cas, il semble que l'auteur a juste oublié de mettre à jour les docs dans un module lorsque des fonctionnalités ont été ajoutées à un autre. J'ai soumis a ticket pour obtenir les docs mis à jour.