如何使用Symfony2中的Monolog登录到不同的文件?

时间:2015-02-16 11:13:35

标签: symfony monolog

我想根据上下文将消息记录到单独的文件中。目前一切都进入了环境的日志文件。如何在Symfony2中使用Monolog实现这一目标?

1 个答案:

答案 0 :(得分:0)

config.yml下的配置文件(config_dev.ymlconfig_prod.ymlmonolog:)中为您要登录的每个文件注册新的处理程序。

handlers:
    main:
        type:         fingers_crossed
        action_level: error
        handler:      nested
    nested:
        type:  stream
        path:  "%kernel.logs_dir%/%kernel.environment%.log"
        level: debug

环境的日志文件将从debug级别向上接收所有内容,但主记录器服务只会记录操作级别error及更高版本。

为您要在配置文件中登录的文件添加自己的处理程序。

cron_logger:
    type: stream
    path: "%kernel.logs_dir%/cron.log"
    level: notice
    channels: "cronchan"

您可以选择要在文件中记录的邮件级别。您应该指定哪个通道将记录到此处理程序。在这种情况下,所选择的频道名称为" cronchan"。与处理程序处于同一级别,注册您的新频道(您需要MonologBu​​ndle 2.4)。

monolog:
    handlers:
        ...
        cron_logger: ...
    channels: ["cronchan"]

您现在可以通过在控制器中获取正确的频道服务来专门记录到cron.log文件:$logger = $this->get('monolog.logger.cronchan');

现在notice级别以上的所有内容都将记录在cron.log文件中。消息也可能记录在环境的日志文件中,但您可以remove the channel from the file's handler's channels

相关问题