0

我有一个 .conf 文件

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

然后,Perl 脚本使用它:

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

我想知道如何读取/更改/替换 <'ENVTAG'> 令牌,以便在 Perl 应用程序中将其设置为:“dev”、“prod”、“testing”(此处为正则表达式?)...另外,如何在 Perl 应用程序中编辑“logfile.filename”?

谢谢。

4

1 回答 1

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;
}
于 2016-02-22T14:35:15.913 回答