我写了一个A类,我定义并初始化了一个rootlogger
my $conf = q(
log4perl.rootLogger = ERROR, LOGFILE
log4perl.appender.LOGFILE.filename = /var/log/Application.log
log4perl.appender.LOGFILE = Log::Log4perl::Appender::File
log4perl.appender.LOGFILE.mode = write
log4perl.appender.LOGFILE.layout = PatternLayout
log4perl.appender.LOGFILE.layout.ConversionPattern = [%r] %F %L %c - %m%n
);
Log::Log4perl->init(\$conf);
在A的子类中,我想使用此记录器
$self->LOG(Log::Log4perl->get_logger("Hotels"));
$self->LOG()->info("Starting 'Hotels'");
运行应用程序时,我收到消息
Log4perl:似乎没有发生初始化。忘了叫init()?
为什么init无法识别?
K.D.J。
答案 0 :(得分:0)
你的例子缺乏足够的细节让我理解发生了什么。
但这是一个有效的例子。
use strict;
use warnings;
use Log::Log4perl;
my $conf = q(
log4perl.rootLogger = ERROR, LOGFILE
log4perl.appender.LOGFILE.filename = /tmp/Application.log
log4perl.appender.LOGFILE = Log::Log4perl::Appender::File
log4perl.appender.LOGFILE.mode = write
log4perl.appender.LOGFILE.layout = PatternLayout
log4perl.appender.LOGFILE.layout.ConversionPattern = [%r] %F %L %c - %m%n
);
Log::Log4perl->init(\$conf);
my $logger = Log::Log4perl->get_logger("Hotels");
$logger->error("test");