【问题标题】:Symfony2 Use logger in listenerSymfony2 在监听器中使用记录器
【发布时间】:2015-08-06 14:51:15
【问题描述】:

我想使用 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>

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

【问题讨论】:

  • 我还会在你的 config 和 config_{env} 文件中检查你的独白设置。某些配置有一个日志级别,需要在写入任何内容之前达到该级别。因此,如果将其设置为高于调试的值,则信息日志可能永远不会显示。

标签: php symfony logging service


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-25
    • 2011-12-31
    • 2023-03-13
    • 2012-10-25
    • 2012-12-13
    相关资源
    最近更新 更多