【发布时间】:2018-11-20 19:53:02
【问题描述】:
我从事两个基于 symfony2.x 和 symfony 3.x 的不同项目。 我想将这两个项目设置为向我发送严重错误的电子邮件,但只记录错误级别的错误。
以下设置适用于 symfony 2.8,但不适用于 symfony3。
monolog:
handlers:
main_critical:
type: fingers_crossed
action_level: error
excluded_404:
- ^/
handler: grouped_critical
grouped_critical:
type: group
members: [streamed_critical, buffered_critical]
streamed_critical:
type: stream
path: "%kernel.logs_dir%/%kernel.environment%_critical.log"
level: critical
buffered_critical:
type: buffer
handler: swift_critical
swift_critical:
type: swift_mailer
from_email: "%error_mail_sender%"
to_email: "%critical_error_mail_recipients%"
subject: Critical error occurred!
level: critical
main_error:
type: fingers_crossed
action_level: error
handler: grouped_error
grouped_error:
type: group
members: [streamed_error]
streamed_error:
type: stream
path: "%log_file_path%"
level: error
错误是:
致命错误:未捕获的错误:已达到“256”的最大函数嵌套级别,正在中止!在第 7 行的 /var/www/statistic/vendor/symfony/symfony/src/Symfony/Component/Debug/Exception/FatalErrorException.php 中
我不确定这个设置有什么问题,因为它适用于 symfony 2.8 但不适用于 3.x。
但是当我删除下面的这个块时,它就可以在 symfony 3 项目上运行。但它只会通过电子邮件记录严重错误,而无需进行以下设置。
main_error:
type: fingers_crossed
action_level: error
handler: grouped_error
grouped_error:
type: group
members: [streamed_error]
streamed_error:
type: stream
path: "%log_file_path%"
level: error
有什么想法吗?
【问题讨论】:
-
出于一般目的,您应该配置单独的
dev和prod环境调试设置。dev设置应该使用 XDebug 和其他调试实用程序,例如 PHPUnit。prod环境不应启用 XDebug 或包含 PHPUnit,因为它们是生产环境中不需要的额外开销。见Will enabling XDebug on a production server make PHP slower?
标签: symfony symfony-3.3 symfony-2.8 php-7.1 monolog