У меня есть следующая запись конфигурации в моем приложении Symfony2:
monolog:
channels:
- channel1
- channel2
handlers:
main:
channels: !channel2
type: error_log
custom:
channels: channel2
level: info
type: stream
path: %logs_base_path%/file.log
Который, начиная с MonologBundle 2.4, создает для меня услуги monolog.logger.channel1
а также monolog.logger.channel2
, Кстати, я использую MonologBundle 2.6.1.
Когда я вводить регистратор для channel2
в одной из моих служб, и я регистрирую сообщение, я нахожу то же сообщение, повторенное 11 раз (!) в file.log
,
Через некоторое время я проверил сгенерированный файл контейнера и обнаружил следующее:
protected function getMonolog_Logger_Channel2Service()
{
$a = $this->get('monolog.handler.custom');
$this->services['monolog.logger.channel2'] = $instance = new \Symfony\Bridge\Monolog\Logger('channel2');
$instance->pushHandler($a);
$instance->pushHandler($a);
$instance->pushHandler($a);
$instance->pushHandler($a);
$instance->pushHandler($a);
$instance->pushHandler($a);
$instance->pushHandler($a);
$instance->pushHandler($a);
$instance->pushHandler($a);
$instance->pushHandler($a);
$instance->pushHandler($a);
$instance->pushHandler($this->get('monolog.handler.debug'));
return $instance;
}
Это объясняет мою проблему: у меня один и тот же обработчик выдавлен 11 раз в моем настраиваемом логгере для channel2. Что-то не так в моей конфигурации монолога? Я бы проверил генератор кода для файла контейнера, но я не знаю, где искать.
FWIW: channel1
зарегистрирован правильно (он не связан ни с какими пользовательскими обработчиками).
Задача ещё не решена.
Других решений пока нет …