php - Symfony2 在监听器中使用记录器

标签 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>

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

最佳答案

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

关于php - Symfony2 在监听器中使用记录器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31858983/

相关文章:

javascript - 将 Javascript 变量作为图像传递给 PHP

php - 如何从传递给 php 查询请求的 jquery 获取 VAR

javascript - 使用 Symfony2 的随机非常长的跨域 ajax 请求

php - Heroku : FFMpeg installed but php worker can't find it

javascript - 处理对 PHP url 的 AJAX 请求以获取 JSON 数据。我无法传递数据

javascript - PHP 不生成 Excel 文件

javascript - Symfony 4 - 如何在 javascript 中使用资源?

java - 将 log4j 消息从方法重定向到不同的日志文件

java - 有没有办法在 log4j 模式中指定当前行号

spring-boot - Spring Boot应用-如何打印Json格式的日志