2015-08-28 40 views
0

我有有log4perl如何更改'Logfile.filename'一次讀取?

log4perl.appender.logFile   = Log::Log4perl::Appender::File 
log4perl.appender.logFile.filename = /myapp/conf/<ENVTAG>myapp.conf 

一個.conf文件之後,Perl腳本消耗它:

Log::Log4perl::init($logConf); 
my $logger = Log::Log4perl->get_logger; 
$logger->info("Begin"); 
$logger->info("End"); 

我想知道如何讀/改/更換< 'ENVTAG' >標記,以便將其設置爲:「dev」,「prod」,「測試」在Perl應用程序(正則表達式在這裏?)...另外,如何編輯Perl應用程序中的「logfile.filename」?

謝謝。

+1

的讀取部分'Perl的魚鉤在配置File'在http://log4perl.sourceforge.net/releases/Log-Log4perl/docs/html/Log/Log4perl.html – Jens

+0

謝謝,它的工作如預期。 – user3772839

回答

0

發現這一項上perlmonks網站

您可以參考它在配置或以程序本身。

my $logconf = qq(
    log4perl.logger      = DEBUG , LOG, SCREEN 

    log4perl.appender.LOG    = Log::Log4perl::Appender::File 
    log4perl.appender.LOG.filename  = sub { return getLogFile(); } 
    log4perl.appender.LOG.mode   = clobber 
    log4perl.appender.LOG.autoflush  = 1 
    log4perl.appender.LOG.layout  = Log::Log4perl::Layout::PatternLayout 
    log4perl.appender.LOG.layout.ConversionPattern = %d %p %m %n 
); 


sub getLogFile { 

    my $log=$0; 
    $log =~ s/^.*\\//; 
    $log =~ s/\..*//; 
    $log .= ".log"; 

    return $log; 
} 
相關問題