2017-10-01 11 views
1

나는 거기에 각 수준에 대한 펜더를 포함 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"); 

내가 작곡가를 어떻게 사용 하는가에 문제가있을 수있다?

답변

1

내 특별한 경우에는 내가 필요로하는 페이지뿐만 아니라 favico.php와 같은 페이지를로드하는 .htaccess 파일을 잘못 작성했습니다.

전 :

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([a-zA-Z0-9\/^\.]+)$ index.php [QSA,L] 

후 : 점 포함되지 않습니다 경로를 일치시키기위한

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^\.]+)$ index.php [QSA,L] 

그냥 변경 패턴.