我已经为我们的Symfony2项目设置了Monolog,以便在发生重大错误时将其发送给我们。
但是,我还想记录非关键错误,并将这些错误通过电子邮件发送给不同的收件人。我很难在文档中看到这一点,但它看起来应该是可能的。我已按如下方式设置配置:
parameters:
error_mail_sender: error@mysite.com
error_mail_recipients: [siteerrors@mysite.com]
critical_error_mail_recipients: [siteerrors@mysite.com, developer@developers.com]
monolog:
handlers:
main_critical:
type: fingers_crossed
action_level: critical
handler: grouped_critical
bubble: false
main_error:
type: fingers_crossed
action_level: error
handler: grouped_error
grouped_critical:
type: group
members: [streamed, buffered_critical]
grouped_error:
type: group
members: [streamed, buffered_error]
streamed:
type: stream
path: "%kernel.logs_dir%/%kernel.environment%.log"
level: debug
buffered_critical:
type: buffer
handler: swift_critical
buffered_error:
type: buffer
handler: swift_error
swift_critical:
type: swift_mailer
from_email: %error_mail_sender%
to_email: %error_mail_recipients%
subject: Critical error occurred!
level: debug
swift_error:
type: swift_mailer
from_email: %error_mail_sender%
to_email: %critical_error_mail_recipients%
subject: Non-critical error occurred
level: debug
通过此设置,我们会收到严重错误,但不会收到非严重错误。
这个设置基于这个问题的(未接受的)答案:How to include the severity of a log in the e-mail subject?。 (如果它适用于我,我会得到答案!)
有人能发现这有什么问题吗?
谢谢!
答案 0 :(得分:1)
问题似乎是冒泡:第一个处理程序中为false,这意味着它将停止将消息传播给其他处理程序。
另外请注意,我会从groups_critical中删除组和流处理程序,因为它已经从grouped_error接收错误,导致日志文件中出现重复的条目。
所以这应该有效:
parameters:
error_mail_sender: error@mysite.com
error_mail_recipients: [siteerrors@mysite.com]
critical_error_mail_recipients: [developer@developers.com]
monolog:
handlers:
main_critical:
type: fingers_crossed
action_level: critical
handler: buffered_critical
buffered_critical:
type: buffer
handler: swift_critical
swift_critical:
type: swift_mailer
from_email: %error_mail_sender%
to_email: %error_mail_recipients%
subject: Critical error occurred!
level: debug
main_error:
type: fingers_crossed
action_level: error
handler: grouped_error
grouped_error:
type: group
members: [streamed, buffered_error]
streamed:
type: stream
path: "%kernel.logs_dir%/%kernel.environment%.log"
level: debug
buffered_error:
type: buffer
handler: swift_error
swift_error:
type: swift_mailer
from_email: %error_mail_sender%
to_email: %critical_error_mail_recipients%
subject: Non-critical error occurred
level: debug
我对它们进行了重新排序,以便更容易看到两个处理程序链。