在Symfony生产环境中将废弃日志记录到自己的文件中

5
我有多个基于Symfony的生产商店。 现在我想编写一个日志文件,记录所有过时内容。
我希望它们出现在“deprecated.log”文件中。 这些过时内容稍后会被读入kibana中。
Monolog-Readme说:
警告(300):不是错误的异常情况。例如:使用过时的API、对API的不良使用、不一定错误但不可取的事情。

(https://github.com/Seldaek/monolog/blob/master/doc/01-usage.md)

所以我尝试了这个配置

monolog:
use_microseconds: false
handlers:
    main:
        type: group
        members: [errors, deprecations]
    errors:
        type: error_log
        level: ERROR
    deprecations:
        type: stream
        level: WARNING
        path: '%kernel.logs_dir%/deprecated.log'
        channels: [php]

但是deprecated.log没有生成。我的错误在哪里?错误日志似乎可以工作,但我的过时方法没有。

2个回答

4
那是因为弃用警告的严重程度为 INFO,但您将最低级别设置为 WARNING,高于 INFO,因此忽略了弃用警告。以下设置应该适用于您:
deprecations:
    type: stream
    level: INFO
    path: '%kernel.logs_dir%/deprecated.log'
    channels: [php]

4

我在各处搜索时发现了这个很好的解决方案。更加美妙的是,自从Symfony 5.1以后,存在“deprecation”通道,所有废弃信息都会记录在该通道中。

自Symfony 5.1起,当存在专用的“deprecation”通道时,废弃信息将被记录在该通道中。
monolog:
channels: [deprecation]
handlers:
    deprecation:
        type: stream
        channels: [deprecation]
        path: php://stderr //or file path like '%kernel.logs_dir%/deprecated.log'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接