使用 monolog Symfony 记录所有消息和仅电子邮件错误
log all messages and email only errors with monolog Symfony
我想将所有消息记录到日志文件,但仅在出现错误时才发送电子邮件,不包括 404。
我使用这段代码工作正常,但它对我来说没有意义,因为这段代码意味着仅当达到错误级别时才会触发主处理程序,然后将其记录或通过电子邮件发送。实际上所有消息仍然记录到文件中。我在这里错过了什么?
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
all messages still log to the file. what am i missing here?
它起作用的原因是您还有 nested
处理程序,它 实际上没有嵌套 ,使它(从 MonologBundle 的角度来看)一个顶级处理程序(意味着它将接收您的应用程序中生成的所有日志)。此外,它指向与 streamed
处理程序相同的文件,因此无法区分哪个处理程序响应了某个记录的消息。
this code means that the main handler won't be triggered only if error level is reached then it will be logged or emailed
是的,main
处理程序将收集日志,直到出现错误(404 除外),然后它将 刷新 所有内容到 grouped
处理程序依次将所有内容通过管道传递给 streamed
和 deduplicated
处理程序
我想将所有消息记录到日志文件,但仅在出现错误时才发送电子邮件,不包括 404。 我使用这段代码工作正常,但它对我来说没有意义,因为这段代码意味着仅当达到错误级别时才会触发主处理程序,然后将其记录或通过电子邮件发送。实际上所有消息仍然记录到文件中。我在这里错过了什么?
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
all messages still log to the file. what am i missing here?
它起作用的原因是您还有 nested
处理程序,它 实际上没有嵌套 ,使它(从 MonologBundle 的角度来看)一个顶级处理程序(意味着它将接收您的应用程序中生成的所有日志)。此外,它指向与 streamed
处理程序相同的文件,因此无法区分哪个处理程序响应了某个记录的消息。
this code means that the main handler won't be triggered only if error level is reached then it will be logged or emailed
是的,main
处理程序将收集日志,直到出现错误(404 除外),然后它将 刷新 所有内容到 grouped
处理程序依次将所有内容通过管道传递给 streamed
和 deduplicated
处理程序