在我们的 Symfony 3 应用程序中,所有来自控制台命令的日志记录(例如,当出现异常时)都被很好地格式化并显示在屏幕上......在生产模式下处理 cron 作业时完全没用。
来自 HTTP 请求的所有异常日志记录都通过服务器上的日志文件路由,并通过 Swifmail 发送给我们的报告(根据 https://symfony.com/doc/3.4/logging/monolog_email.html)
我需要从控制台命令中获取与 HTTP 请求中的日志相同的日志,但 Symfony 文档似乎忽略了这种情况?
我们的配置:
monolog:
handlers:
main:
type: fingers_crossed
action_level: critical
handler: grouped
grouped:
type: group
members: [streamed, deduplicated]
streamed:
type: stream
path: '%kernel.logs_dir%/%kernel.environment%.log'
level: debug
deduplicated:
type: deduplication
handler: swift
swift:
type: swift_mailer
level: debug
formatter: monolog.formatter.html
content_type: text/html
console:
type: console
process_psr_3_messages: false
Symfony 3 在 Monolog 的错误 (400) 级别记录控制台异常。
在我们的应用程序中,我们将
monolog.handlers.main.action_level
设置为临界值(500)。
解决这个问题的选项是
a) 补丁
Symfony\Component\Console\EventListener\ErrorListener
调用 $this->logger->addCritical
而不是 $this->logger->error
或
b) 将配置级别从严重降低到错误,并忍受获取所有 HTTP 4 的错误报告?也有错误。