-1

ルートロガーを定義して初期化するクラス A を作成しました

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

AI のサブクラスでこのロガーを使用したい

$self->LOG(Log::Log4perl->get_logger("Hotels"));
$self->LOG()->info("Starting 'Hotels'");

アプリケーションを実行すると、メッセージが表示されます

Log4perl: 初期化が行われていないようです。init() を呼び出すのを忘れましたか?

init が認識されないのはなぜですか?

KDJ

4

1 に答える 1

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");
于 2016-08-25T23:43:08.200 に答える