Logger
作成されたオブジェクトを ( で初期化した後に)チェックするLogger::getLogger("test");
と、すでに親 Logger があることがわかります object(LoggerRoot)
。このオブジェクトのレベルは に設定されており、これはDEBUG
実際にはdebug
およびinfo
メッセージを出力するロガーです。
可能なアプローチの 1 つは、代わりに RootLogger を使用することです。
$logger = Logger::getRootLogger();
$logger->setLevel(LoggerLevel::getLevelWarn());
$logger->debug("debug");
$logger->info("info");
$logger->warn("warn");
もう 1 つの方法は、rootLogger を構成して、非常に高いレベル ( FATAL
) のメッセージのみをログに記録し、ロガーが適切なレベルを設定できるようにすることです。ただし、その場合は、独自のアペンダーをそれらに追加する必要があります (ロギング ジョブを実行するのはアペンダーです。ロガーはそれらを管理するだけです)。繰り返しますが、1 つの可能なアプローチ:
$rootLogger = Logger::getRootLogger();
$rootLogger->setLevel(LoggerLevel::getLevelFatal());
$logger = Logger::getLogger('some');
$logger->addAppender($rootLogger->getAppender('default'));
$logger->setLevel(LoggerLevel::getLevelInfo());
$logger->debug('debug'); // won't print
$logger->info('info'); // will be printed
$logger->warn('warn'); // will be printed too
$logger->fatal('fatal dup'); // will be printed TWICE:
// with $logger, then with $rootLogger
$logger->setAdditivity(false); // switching off log event propagation
$logger->fatal('fatal once'); // will be printed ONCE
しかし、実際にロガーの複雑な階層が必要な場合は、log4php ドキュメントのこのセクションで説明されているアプローチに従って、一度にすべてを構成することを強くお勧めします。