Symfony2在侦听器中使用记录器

时间:2015-08-06 14:51:15

标签: php symfony logging service

我想使用Monolog从Symfony2应用程序中的侦听器写入日志。

我的听众是这样定义的:

use Monolog\Logger;

class CalendarEventListener
{

    private $logger;

    public function __construct(Logger $logger)
    {
        $this->logger = $logger;
    }

    public function loadEvents(CalendarEvent $calendarEvent)
    {

        $this->logger->info('test');

        ...

    }
}

这是我的文件src / CRMBundle / Resources / config / services.xml:

<services>
    <service id="crmbundle.calendar_listener" class="CRMBundle\EventListener\CalendarEventListener">
        <argument type="service" id="logger" />
        <tag name="monolog.logger" event="calendar.load_events" method="loadEvents" />
    </service>
</services>

但是在调用侦听器时,日志文件中没有写入任何内容。

1 个答案:

答案 0 :(得分:3)

您将两个不同的标签混合在一起。 monolog.logger标记允许您使用自定义日志记录通道。听一个事件是一个完全独立的事情。请改用kernel.event_listener标记名称。您可以看到完整的代码列表here。此外,如果calendar.load_events是自定义事件,请务必使用核心事件调度程序将其分派到某处:@event_dispatcher