Silex - 只记录到 Monolog ErrorLogHandler

Silex - only log to Monolog ErrorLogHandler

我想使用 Monolog 将所有内容记录到网络服务器(apache 的)错误日志中——与使用 error_log() 一样。

但是,如果我按如下方式设置日志记录:

$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 和 warning+ 到 apache 错误日志。这里的日志级别并不真正相关,我希望能够仅登录到 apache 日志(主要是为了对 logrotation 的开箱即用支持)。

我想有两个选择:

不附加您的错误日志处理程序,您 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;
}));