在log4php configuration documentation中,有一个名为“additivity”的配置选项,用于停止从root记录器继承。
但是,我添加到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
。我错过了什么?
答案 0 :(得分:2)
这可能记录得很糟糕,因为除了INI方式的过时示例(不推荐使用)之外,没有关于如何配置可加性的真实示例。
但是看一下https://logging.apache.org/log4php/docs/loggers.html(Subchapter“禁用appender additivity”)的XML示例,可以看出可加性是记录器本身的一个设置 - 它不能独立存在(INI的配置方式会让你这么认为。)
通过查看LoggerConfiguratorDefault::configureLogger
中的代码,很明显additivity
是与单个记录器配置中的level
和appenders
并行的子项。
所以这应该有效:
// ...
'loggers' => array(
'queryLogger' => array(
'level' => 'INFO',
'appenders' => array('queryFileAppender'),
'additivity' => false
)
), //...