日志中的所有邮件和电子邮件只能用独白的Symfony
问题描述:
我想将所有消息记录到日志文件,但只有在排除404 我用这个代码的正常工作错误的情况下发送电子邮件的错误,但它并没有任何意义,我,因为这个代码意味着只有达到错误级别时才会触发主处理程序,那么它将被记录或通过电子邮件发送。实际上所有消息仍然记录到文件中。我在这里错过了什么?日志中的所有邮件和电子邮件只能用独白的Symfony
monolog:
handlers:
main:
type: fingers_crossed
action_level: error
excluded_404s:
- ^/
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
from_email: %noreply_email%
to_email: %webmaster_email%
subject: 'Error Notification %%message%%'
level: error
formatter: monolog.formatter.html
content_type: text/html
login:
type: stream
path: "%kernel.logs_dir%/auth.log"
level: info
channels: security
nested:
type: stream
path: "%kernel.logs_dir%/%kernel.environment%.log"
level: debug
console:
type: console
编辑:这里是最后的版本
monolog:
handlers:
streamed:
type: stream
path: "%kernel.logs_dir%/%kernel.environment%.log"
level: debug
emailed:
type: fingers_crossed
action_level: error
excluded_404s:
- ^/
handler: swift
swift:
type: swift_mailer
from_email: %noreply_email%
to_email: %webmaster_email%
subject: 'Error Notification %%message%%'
level: error
formatter: monolog.formatter.html
content_type: text/html
login:
type: stream
path: "%kernel.logs_dir%/auth.log"
level: info
channels: security
console:
type: console
答
所有消息仍记录到文件中。我在这里错过了什么?
它的工作原理的原因是,你也有nested
处理这实际上没有嵌套,使得它(从视图MonologBundle点)的顶级处理器(这意味着它会收到生成的所有日志在你的应用程序中)。此外,它指向同一文件从而streamed
处理程序使得不可能区分哪些处理程序是响应于特定的记录的消息。
这个代码意味着主处理器将不会被触发只有在达到误差的水平,那么它会被记录或电子邮件
是的,直到它得到一个错误main
处理程序会收集日志(除了404),然后它会冲洗都记录下来,以grouped
处理这反过来又管一切streamed
和deduplicated
处理
感谢Xymanek现在我明白了,所以要记录所有日志和电子邮件仅错误不包括404。我将编辑我的问题以包含我的最终代码,请查看它是否正确。 – ZeSoft
@ZeSoft你仍然需要包装''一个一个fingers_crossed'里面deduplicated'处理。 'excluded_404s'选项仅适用于手指交叉处理类型 – Xymanek
谢谢@Xymanek的回答,所以我编辑我上面的代码和我删除了重复数据删除的处理程序,并直接分配迅速处理程序,以电子邮件的处理程序,它的好处是现在?类型重复数据删除是什么意思? – ZeSoft