Добро пожаловать,
У меня проблема с поиском ответа о том, как сделать, чтобы журналы Monolog были сохранены только в файл без возврата на консоль. В настоящее время они сохраняются в файл и выбрасываются в консоль.
Я использую это:
Silex 1.3
Моя конфигурация в services.php:
// Register console's input/output for further usage (for example in handlers)
$app['console.input'] = new \Symfony\Component\Console\Input\ArgvInput((array)@$_SERVER['argv']);
$app['console.output'] = new \Symfony\Component\Console\Output\ConsoleOutput();
$app['console.logger_handler'] = new \Symfony\Bridge\Monolog\Handler\ConsoleHandler($app['console.output']);
// Loggers ---------------------------------------------------------------------
$app->register(new \Silex\Provider\MonologServiceProvider(), [
'monolog.name' => $app['monolog.name'], // Would be overidden in provider
'monolog.level' => $app['monolog.level'],
]);
// Attach console handler to default logger
$app['logger']->pushHandler($app['console.logger_handler']);
// Initializes the monolog factory...
$app['monolog.factory'] = $app->protect(function ($name) use ($app) {
$log = new $app['monolog.logger.class']($name);
// FIXME Doesn't check if the values are actually configured
$handler = new \Monolog\Handler\StreamHandler($app["monolog.$name.logfile"], $app["monolog.$name.level"]);
// Custom formatting only when user context is available
if ($app->offsetExists('security.token_storage') && $app->offsetExists('session')) {
$formatter = new \Test\Silex\App\Lib\Monolog\Formatter\UserLineFormatter($app['security.token_storage'], $app['session']);
$handler->setFormatter($formatter);
}
$log->pushHandler($handler);
// Add console handler only if not disabled
if (
!$app->offsetExists("monolog.$name.skip_console_handler") ||
true !== $app["monolog.$name.skip_console_handler"]
) {
$log->pushHandler($app['console.logger_handler']);
}
return $log;
});
// ... and creates the loggers
foreach (['actions', 'error'] as $channel) {
$app["monolog.$channel"] = $app->share(function (TestApplication $app) use ($channel) {
return $app['monolog.factory']($channel);
});
}
Вот кусок кода от глобального. PHP:
$config = [
'monolog.name' => 'test_app',
'monolog.level' => \Monolog\Logger::INFO,
'monolog.logfile' => __DIR__ . '/../../var/logs/app.log',
'monolog.error.logfile' => __DIR__ . '/../../var/logs/error.log',
'monolog.error.level' => \Monolog\Logger::WARNING,
'monolog.actions.logfile' => __DIR__ . '/../../var/logs/actions.log',
'monolog.actions.level' => \Monolog\Logger::DEBUG,
];
Задача ещё не решена.
Других решений пока нет …