日志中的所有邮件和电子邮件只能用独白的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处理实际上没有嵌套,使得它(从视图MonologBu​​ndle点)的顶级处理器(这意味着它会收到生成的所有日志在你的应用程序中)。此外,它指向同一文件从而streamed处理程序使得不可能区分哪些处理程序是响应于特定的记录的消息。

这个代码意味着主处理器将不会被触发只有在达到误差的水平,那么它会被记录或电子邮件

是的,直到它得到一个错误main处理程序会收集日志(除了404),然后它会冲洗都记录下来,以grouped处理这反过来又管一切streameddeduplicated处理

+0

感谢Xymanek现在我明白了,所以要记录所有日志和电子邮件仅错误不包括404。我将编辑我的问题以包含我的最终代码,请查看它是否正确。 – ZeSoft

+0

@ZeSoft你仍然需要包装''一个一个fingers_crossed'里面deduplicated'处理。 'excluded_404s'选项仅适用于手指交叉处理类型 – Xymanek

+0

谢谢@Xymanek的回答,所以我编辑我上面的代码和我删除了重复数据删除的处理程序,并直接分配迅速处理程序,以电子邮件的处理程序,它的好处是现在?类型重复数据删除是什么意思? – ZeSoft