Аддитивность логгера log4php
В документации по конфигурации log4php есть опция конфигурации, называемая "аддитивность", которая останавливает наследование от корневых регистраторов.
Тем не менее, я добавил в файл конфигурации в формате PHP, root logger все еще регистрирует запись, которая должна появиться внутри logger queryLogger
только:
<?php
return array(
'rootLogger' => array(
'level' => 'DEBUG',
'appenders' => array('fileAppender'),
),
'loggers' => array(
'queryLogger' => array(
'level' => 'INFO',
'appenders' => array('queryFileAppender')
)
),
'appenders' => array(
'fileAppender' => array(
'class' => 'LoggerAppenderDailyFile',
'layout' => array(
'class' => 'LoggerLayoutPattern',
'params' => array(
'conversionPattern' => '%d{Y-m-d H:i:s.u} [%-5p] %-100m ---------- [%F:%L]%n'
)
),
'params' => array(
'datePattern' => 'Y-m-d',
'file' => LOG_PATH . 'system-%s.log',
),
),
'queryFileAppender' => array(
'class' => 'LoggerAppenderDailyFile',
'layout' => array(
'class' => 'LoggerLayoutPattern',
'params' => array(
'conversionPattern' => '%d{Y-m-d H:i:s.u} %m%n'
)
),
'params' => array(
'datePattern' => 'Y-m-d',
'file' => LOG_PATH . 'query-%s.log',
),
),
),
'additivity' => array(
'fileAppender' => false,
),
);
?>
Моя цель - войти только queryLogger
, но не в rootLogger
, Что я упустил?
1 ответ
Это, вероятно, плохо документировано, потому что нет реального примера того, как настроить аддитивность, кроме устаревшего примера способа INI (который устарел).
Но, глядя на XML-пример https://logging.apache.org/log4php/docs/loggers.html (Подраздел "Отключение аддитивности приложения"), выявляет, что аддитивность является настройкой самого регистратора - он не стоит сам по себе (INI-способ настройки вещей заставляет вас так думать).
И, посмотрев на код в LoggerConfiguratorDefault::configureLogger
становится ясно, что additivity
подключ подключен параллельно level
а также appenders
в индивидуальной конфигурации регистратора.
Так что это должно работать:
// ...
'loggers' => array(
'queryLogger' => array(
'level' => 'INFO',
'appenders' => array('queryFileAppender'),
'additivity' => false
)
), //...