在 symfony 生产中将弃用记录到自己的文件中

Log deprecations to own file in symfony production

我有多个以 Symfony 为基础的生产车间。 现在我想写一个记录所有弃用的日志文件。

我希望它们出现在 "deprecated.log" 文件中。 这些弃用稍后会读入 kibana。

Monolog-Readme 说

WARNING (300): Exceptional occurrences that are not errors. Examples: Use of deprecated APIs, poor use of an API, undesirable things that are not necessarily wrong.

(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没有生成。 我的错误是什么?错误日志似乎有效,但不是我的弃用。

这是因为弃用的严重级别为 INFO,但您设置了最低级别 WARNING,该级别高于 INFO,因此弃用将被忽略。 以下设置应该适合您:

deprecations:
    type: stream
    level: INFO
    path: '%kernel.logs_dir%/deprecated.log'
    channels: [php]

到处看了看,这个解决方案很好。但更好的是,自 5.1 以来,有弃用通道

从 Symfony 5.1 开始,弃用会在专用的“弃用”频道中记录下来
monolog:
channels: [deprecation]
handlers:
    deprecation:
        type: stream
        channels: [deprecation]
        path: php://stderr //or file path like '%kernel.logs_dir%/deprecated.log'