2015-08-28 42 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; 
} 
相关问题