2016-12-19 1 views
1

Я хочу записать все, используя журнал ошибок Monolog to webserver (apache) - то же самое, что и с помощью функции 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 и предупреждение + в апача журнал ошибок. Уровни журнала здесь не очень актуальны, я хотел бы иметь возможность регистрироваться в Apache log ТОЛЬКО (в основном, для готовой поддержки для логротации).

Я предполагаю, что есть два варианта:

  • Уже используя правильный путь для MonologServiceProvider monolog.logfile (я мог бы определить его «php_value error_log» в апача ВХост конфигурации, а затем использовать ini_get («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; 
})); 
Смежные вопросы