나는 거기에 각 수준에 대한 펜더를 포함 log4php 설정은 특히 같은 파일의이 :이 log4php의 설정은 로그 파일에 중복 출력에 이르게 왜
<configuration xmlns="http://logging.apache.org/log4php/">
<appender name="info" class="LoggerAppenderRollingFile">
<layout class="LoggerLayoutPattern">
<param name="conversionPattern" value="%date %logger %-5level %msg%n"/>
</layout>
<param name="file" value="../app/logs/info.log"/>
<param name="append" value="true"/>
<param name="maxFileSize" value="100MB"/>
<param name="maxBackupIndex" value="1"/>
<filter class="LoggerFilterLevelRange">
<param name="levelMin" value="info"/>
<param name="levelMax" value="info"/>
</filter>
</appender>
<appender name="warn" class="LoggerAppenderRollingFile">
<layout class="LoggerLayoutPattern">
<param name="conversionPattern" value="%date %logger %-5level %msg%n"/>
</layout>
<param name="file" value="../app/logs/warn.log"/>
<param name="append" value="true"/>
<param name="maxFileSize" value="100MB"/>
<param name="maxBackupIndex" value="1"/>
<filter class="LoggerFilterLevelRange">
<param name="levelMin" value="warn"/>
<param name="levelMax" value="warn"/>
</filter>
</appender>
<appender name="error" threshold="error" class="LoggerAppenderRollingFile">
<layout class="LoggerLayoutPattern">
<param name="conversionPattern" value="%date %logger %-5level %msg%n"/>
</layout>
<param name="file" value="../app/logs/error.log"/>
<param name="append" value="true"/>
<param name="maxFileSize" value="100MB"/>
<param name="maxBackupIndex" value="1"/>
<filter class="LoggerFilterLevelRange">
<param name="levelMin" value="error"/>
<param name="levelMax" value="fatal"/>
</filter>
</appender>
<appender name="debug" class="LoggerAppenderRollingFile">
<layout class="LoggerLayoutPattern">
<param name="conversionPattern" value="%date %logger %-5level %msg%n"/>
</layout>
<param name="file" value="../app/logs/debug.log"/>
<param name="append" value="true"/>
<param name="maxFileSize" value="100MB"/>
<param name="maxBackupIndex" value="1"/>
<filter class="LoggerFilterLevelRange">
<param name="levelMin" value="debug"/>
<param name="levelMax" value="debug"/>
</filter>
</appender>
<root>
<level value="debug" />
<appender-ref ref="info"/>
<appender-ref ref="warn"/>
<appender-ref ref="error"/>
<appender-ref ref="debug"/>
</root>
</configuration>
그리고 다음과 같은 PHP 코드 :
Logger::configure('config.xml');
$logger = Logger::getRootLogger();
$logger->warn("test");
$logger->error("test");
$logger->info("test");
$logger->debug("test");
그리고 PHP 코드를 실행할 때마다 모든 파일이 생성되고 로그가 예상대로 레벨별로 각 파일에 기록되지만 모든 로그 라인은 다음과 같이 중복됩니다.
cat logs/info.log
2017-10-01T22:06:44+00:00 root INFO test
2017-10-01T22:06:44+00:00 root INFO test
내가 뭘 잘못하고 있니?
업데이트는 독백 로거를 시도했지만 같은 문제가 있었다, 클래스 로딩에 문제처럼 보인다. 나는 설정은 다음 선이 작곡가 사용하고 있습니다 :
{
"require": {
"monolog/monolog": "1.23.0"
},
"autoload": {
"psr-4": {
"App\\": "src"
}
}
}
을 그리고 내가 (SRC에없는) 응용 프로그램 클래스를 초기화 인덱스 PHP, 트래픽을 리디렉션 어디 htaccess로 있습니다. 그 클래스에서 나는 다음 코드를 호출한다 :
$this->logger = new Logger('default');
$this->logger->pushHandler(new StreamHandler(LOGS_DIR . 'info.log', Logger::INFO));
$this->logger->pushHandler(new StreamHandler(LOGS_DIR . 'error.log', Logger::ERROR));
$this->logger->pushHandler(new StreamHandler(LOGS_DIR . 'debug.log', Logger::DEBUG));
$this->logger->error("error");
$this->logger->info("info");
$this->logger->debug("debug");
내가 작곡가를 어떻게 사용 하는가에 문제가있을 수있다?