为什么Symfony仍然会记录到dev.log文件,即使我没有在loghandler中定义它?

Sti*_*vni 5 php logging symfony monolog

在执行Symfony命令期间,我想将消息记录到另一个文件.我已经阅读了Symfony和Monolog文档,它应该像我在这里描述的那样工作.(请注意,我知道来自'doctrine','event',...频道的消息仍将由主处理程序记录,但这对我来说无关紧要)

在我config.yml,我有这个:

monolog:
    channels: [commandline]
    handlers:
        main:
            type:  stream
            path:  "%kernel.logs_dir%/%kernel.environment%.main.log"
            level: debug
            channels: [!commandline]
        commandline:
            type:  stream
            path:  "%kernel.logs_dir%/%kernel.environment%.commandline.log"
            level: debug
            channels: commandline
        stdout:
            type:  stream
            path:  "php://stdout"
            level: debug
            channels: commandline
        mail:
            type:         stream
            action_level: alert
            handler:      buffered_mail
        buffered_mail:
            type:    buffer
            handler: swift
        swift:
            type:       swift_mailer
            from_email: some@email.com
            to_email:   some@email.com
            subject:    "Something went wrong"
            level:      alert
Run Code Online (Sandbox Code Playgroud)

我期待有2个日志文件:dev.main.logdev.commandline.log.但是我还有第三个日志文件:dev.log记录所有消息.我似乎没有找到定义loghandler的位置以及如何阻止它记录事物......

如果有人能指出我正确的方向,那就太好了!

顺便说一句,我正在使用:

  • symfony 2.3
  • monolog-bundle 2.4

编辑

没有任何monolog部分config_dev.yml

Nic*_*ich 5

monolog.handlers.main从 中删除config_dev.yml

它通常包含 path: "%kernel.logs_dir%/%kernel.environment%.log"

配置_dev.yml(默认)

monolog:
    handlers:
        main:   # <- remove this handler
            type:   stream
            path:   "%kernel.logs_dir%/%kernel.environment%.log" #<- logs/dev.log
            level:  debug
Run Code Online (Sandbox Code Playgroud)

main从此配置文件中删除处理程序。

  • 我的问题是:“为什么 Symfony 仍然记录到 dev.log 文件,即使我没有在日志处理程序中定义它?” - 我认为你的回答没有解决问题。您无需解释为什么会发生这种情况,而只是假设定义了其他处理程序。好吧:`config_dev.yml` 文件中没有额外的处理程序。您的建议也忽略了我可能**想要**为我的日志文件添加后缀的事实。我认为downvote和你认为你的答案一样合法...... (2认同)