Monolog在Symfony应用程序的记录器服务中推送相同的自定义处理程序11次

时间:2014-12-21 10:40:50

标签: php symfony logging monolog

我在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

从MonologBu​​ndle 2.4开始,为我创建了服务monolog.logger.channel1monolog.logger.channel2。顺便说一下,我正在使用MonologBu​​ndle 2.6.1。

当我在其中一个服务中注入channel2的记录器并记录一条消息时,我在file.log中发现了相同的消息重复了11次(!)。

过了一段时间,我检查了生成的容器文件,我发现了这个:

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;
}

这解释了我的问题:我在我的自定义记录器中为channel2推送了11次相同的处理程序。我的monolog配置有什么问题吗?我会检查容器文件的代码生成器,但我不知道在哪里看。

FWIW:channel1已正确注册(它与任何自定义处理程序无关)。

0 个答案:

没有答案