我想根据上下文将消息记录到单独的文件中。目前一切都进入了环境的日志文件。如何在Symfony2中使用Monolog实现这一目标?
答案 0 :(得分:0)
在config.yml
下的配置文件(config_dev.yml
或config_prod.yml
和monolog:
)中为您要登录的每个文件注册新的处理程序。
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"。与处理程序处于同一级别,注册您的新频道(您需要MonologBundle 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。