log4php を使用しようとしていますが、構成を理解するのに問題があります。log4j xml の動作を同じ log4php xml と比較しています。同じコード。しかし、出力が異なります。ドキュメントからは、5 行がログに記録されると予想されますが、log4php では 1 行しか記録されません。どうか、私は自分自身を狂わせています。
PHP コード:
<?php
include("log4php/Logger.php");
Logger::configure('log4php.xml');
$rlogger = Logger::getRootLogger();
$rlogger->debug('Not logged');
$rlogger->error('Logged');
$logger = Logger::getLogger('com.suri');
$logger->debug('Logged');
$logger->warn('Logged');
$logger = Logger::getLogger('com.suri.factory');
$logger->debug('Not logged');
$logger->warn('Logged');
$logger = Logger::getLogger('com.suri.factory.Bar');
$logger->debug('Not logged');
$logger->info('Logged');
?>
XML 構成:
<?xml version="1.0" encoding="UTF-8" ?>
<configuration xmlns="http://logging.apache.org/log4php/">
<!-- A1 is set to be a ConsoleAppender -->
<appender name="A1" class="LoggerAppenderConsole">
<layout class="LoggerLayoutPattern">
<param name="ConversionPattern" value="%d [%t] - %-5p %c - %m%n"/>
</layout>
</appender>
<logger name="com.suri.factory.Bar">
<level value="info"/>
</logger>
<logger name="com.suri.factory">
<level value="warn"/>
</logger>
<logger name="com">
<level value="debug"/>
</logger>
<root>
<level value="error" />
<appender-ref ref="A1" />
</root>
</configuration>
出力:
2014-03-13T18:01:30-03:00 [14939] - ERROR root - Logged
予想される出力 (jython+log4j で同じ構成と同じコードで生成):
2014-03-13 18:09:03,591 [main] - ERROR root - Logged
2014-03-13 18:09:03,592 [main] - DEBUG com.suri - Logged
2014-03-13 18:09:03,592 [main] - WARN com.suri - Logged
2014-03-13 18:09:03,592 [main] - WARN com.suri.factory - Logged
2014-03-13 18:09:03,592 [main] - INFO com.suri.factory.Bar - Logged
ジソンコード:
from org.apache.log4j import *
from org.apache.log4j.xml import *
if __name__ == '__main__':
xml.DOMConfigurator.configure('log4j.xml')
rlogger = LogManager.getRootLogger()
rlogger.debug('Not logged');
rlogger.error('Logged');
logger = LogManager.getLogger('com.suri');
logger.debug('Logged');
logger.warn('Logged');
logger = LogManager.getLogger('com.suri.factory');
logger.debug('Not logged');
logger.warn('Logged');
logger = LogManager.getLogger('com.suri.factory.Bar');
logger.debug('Not logged');
logger.info('Logged');
Jython XML 構成:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<!-- A1 is set to be a ConsoleAppender -->
<appender name="A1" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d [%t] - %-5p %c - %m%n"/>
</layout>
</appender>
<logger name="com.suri.factory.Bar">
<level value="info"/>
</logger>
<logger name="com.suri.factory">
<level value="warn"/>
</logger>
<logger name="com">
<level value="debug"/>
</logger>
<root>
<level value="error" />
<appender-ref ref="A1" />
</root>
</log4j:configuration>
ありがとう!