2016-12-19 1 views
1

weblog (Apache)의 오류 로그에 Monolog를 사용하여 모든 것을 기록하고 싶습니다. error_log()를 사용할 때와 동일한 방법으로 로그를 작성하고 싶습니다. 내가 로깅을 설정 한 경우Silex - Monolog에 로그 전용 ErrorLogHandler

그러나, 다음과 같이

$app->register(new Silex\Provider\MonologServiceProvider(), array(
    'monolog.logfile' => sys_get_temp_dir().'/app.log' 
)); 

$app['monolog'] = $app->share($app->extend('monolog', function($monolog, $app) { 
    $monolog->pushHandler(new ErrorLogHandler(ErrorLogHandler::OPERATING_SYSTEM, Logger::WARNING)); 
    return $monolog; 
})); 

모든 /tmp/app.log와 아파치 오류 로그에 경고 +에 기록됩니다. 여기의 로그 수준은별로 관련이 없습니다. 아파치 로그에만 로그 할 수 있기를 원합니다. (주로 로그 로테이션에 대한 out-of-the-box 지원). 내 생각

두 가지 옵션이 있습니다 : 이미 MonologServiceProvider의 monolog.logfile에 대한 올바른 경로를 사용하여

  • (나는) ('의 error_log를'에 ini_get 사용 후 아파치 가상 호스트 설정에 'php_value로의 error_log'로 정의하고 수 내가 비록 vhost 파일에 추가 항목을 추가 할 필요가없는 다른 솔루션을 선호하지만)
  • 어떻게 든 원래 로깅 설정을 재정의합니다 (http://silex.sensiolabs.org/doc/providers/monolog.html#customization).)

답변

1

오류 로그 처리기를 추가하는 대신 그 중 하나만 사용하는 방법에 대해 overwrite the default handlers은 어떨까요?

$app['monolog'] = $app->share($app->extend('monolog', function($monolog, $app) { 
    $monolog-> setHandlers([new ErrorLogHandler(ErrorLogHandler::OPERATING_SYSTEM, Logger::WARNING)]); 
    return $monolog; 
}));