我有点新的log4php .. 我需要在不同的文件中输出INFO和DEBUG级别。 那可能吗? 我的xml看起来像这样:
<appender name="dlog" class="LoggerAppenderRollingFile">
<param name="file" value="C:/log/dlog"></param></appender>
<appender name="ilog" class="LoggerAppenderRollingFile">
<param name="file" value="C:/log/ilog/"></param></appender>
<root>
<level value="DEBUG" />
<appender_ref ref="dlog" ></appender_ref>
</root>
<logger name="myLogger">
<level value="INFO"/>
<appender-ref ref="ilog" />
</logger>
* *这只输出相应文件名中的INFO级别 请帮忙 :( 非常感谢。
答案 0 :(得分:2)
这可以使用带过滤器和一个记录器的多个appender来实现。
<强>概述强>
您可以定义多个appender以将日志记录发送到不同的目标。我们将为每个级别定义1个appender,每个appender将记录到不同的文件。
除此之外,我们还需要为每个appender创建一个过滤器。我们将使用过滤器LoggerFilterLevelRange,我们将指定最小和最大级别。请注意,过滤器LoggerFilterLevelMatch 无法使用,因为它与过滤器匹配,但与其他过滤器无关。
对于记录器,我们将所有的appender附加到唯一的记录器上。
这样,您可以根据错误级别将不同的日志消息发送到不同的文件。
<强>配置强>
<appender name="dlog" class="LoggerAppenderRollingFile">
<param name="file" value="C:/log/dlog" />
<filter class="LoggerFilterLevelRange">
<param name="levelMin" value="debug" />
<param name="levelMax" value="debug" />
</filter>
</appender>
<appender name="ilog" class="LoggerAppenderRollingFile">
<param name="file" value="C:/log/ilog" />
<filter class="LoggerFilterLevelRange">
<param name="levelMin" value="info" />
<param name="levelMax" value="info" />
</filter>
</appender>
<root>
<level value="INFO" />
<appender_ref ref="ilog" />
<appender_ref ref="dlog" />
</root>
</configuration>
<强>用法强>
require_once 'Logger.php';
Logger::configure('log_config.xml');
$logger = Logger::getLogger();
$logger->info('This message is meant to inform.');
$logger->debug('A debug message!');
我希望这会有所帮助。
答案 1 :(得分:0)
我认为适当的解决方案是对您的appender应用过滤器和阈值。像这样:
<appender name="dlog" class="LoggerAppenderRollingFile">
<param name="file" value="C:/log/dlog" />
<filter class="LoggerFilterLevelMatch">
<param name="LevelToMatch" value="debug" />
<param name="AcceptOnMatch" value="true" />
</filter>
<filter class="LoggerFilterDenyAll" />
</appender>
<appender threshold="INFO" name="ilog" class="LoggerAppenderRollingFile">
<param name="file" value="C:/log/ilog/" />
</appender>
<root>
<level value="DEBUG" />
<appender_ref ref="dlog" />
<appender_ref ref="ilog" />
</root>
这样,只允许debug
级别的邮件进入dlog
,并且(由于阈值)只有info
及以上ilog
。如果您不希望info
中的邮件超过ilog
级别,那么您可以应用与dlog
附加程序相同的过滤器。