Logging 如何通过电子邮件发送严重错误并将其余错误记录到prod.log
一定是一些非常琐碎的事情,但我不能让symfony2通过电子邮件发送一些错误(5xx)并简单地将其余的(信息级别)记录到文件中 这是我所拥有的,几乎是一份完整的Logging 如何通过电子邮件发送严重错误并将其余错误记录到prod.log,logging,symfony,Logging,Symfony,一定是一些非常琐碎的事情,但我不能让symfony2通过电子邮件发送一些错误(5xx)并简单地将其余的(信息级别)记录到文件中 这是我所拥有的,几乎是一份完整的 它确实会通过电子邮件发送5xx错误,但在cookbook示例中的prod.log中不会出现404错误或应用程序信息消息: 邮件处理程序是一个手指交叉的处理程序,这意味着只有在达到操作级别(在本例中为关键级别)时才会触发它。然后,它会记录所有内容,包括操作级别以下的消息。只有5xx HTTP代码错误才会触发临界级别。处理程序设置意味着输出
它确实会通过电子邮件发送5xx错误,但在cookbook示例中的prod.log中不会出现404错误或应用程序信息消息: 邮件处理程序是一个手指交叉的处理程序,这意味着只有在达到操作级别(在本例中为关键级别)时才会触发它。然后,它会记录所有内容,包括操作级别以下的消息。只有5xx HTTP代码错误才会触发临界级别。处理程序设置意味着输出随后被传递到缓冲处理程序 再次摘自烹饪书: 如果希望400级和500级错误都触发电子邮件,请将“操作”级别设置为“错误”,而不是“关键”
从烹饪书示例中: 邮件处理程序是一个手指交叉的处理程序,这意味着只有在达到操作级别(在本例中为关键级别)时才会触发它。然后,它会记录所有内容,包括操作级别以下的消息。只有5xx HTTP代码错误才会触发临界级别。处理程序设置意味着输出随后被传递到缓冲处理程序 再次摘自烹饪书: 如果希望400级和500级错误都触发电子邮件,请将“操作”级别设置为“错误”,而不是“关键”
那么您想要的是两个行为不同的处理程序?然后只需使用两个未连接的处理程序:
# app/config/config_prod.yml
monolog:
handlers:
main:
type: fingers_crossed
action_level: error
handler: streamed
streamed:
type: stream
path: "%kernel.logs_dir%/%kernel.environment%.log"
action_level: info
level: debug
buffered:
type: buffer
action_level: critical
handler: swift
swift:
type: swift_mailer
from_email: error@example.com
to_email: error@example.com
subject: An Error Occurred!
level: debug
如您所见,删除分组处理程序,告诉main使用stream,并向缓冲区“拆分”添加操作级别,将处理stream和swift,以便您可以为两者定义不同的操作
使用此日志记录者,您只能通过电子邮件收到错误消息,而不是完整的日志,就像有一个fingers\u crossed
类型时一样。如果您希望手指交叉,只需添加另一个处理程序:
another_main:
type: fingers_crossed
action_level: critical
handler: buffered
当然,您需要再次从缓冲区中删除
操作级别
。那么您想要的是两个行为不同的处理程序?然后只需使用两个未连接的处理程序:
# app/config/config_prod.yml
monolog:
handlers:
main:
type: fingers_crossed
action_level: error
handler: streamed
streamed:
type: stream
path: "%kernel.logs_dir%/%kernel.environment%.log"
action_level: info
level: debug
buffered:
type: buffer
action_level: critical
handler: swift
swift:
type: swift_mailer
from_email: error@example.com
to_email: error@example.com
subject: An Error Occurred!
level: debug
如您所见,删除分组处理程序,告诉main使用stream,并向缓冲区“拆分”添加操作级别,将处理stream和swift,以便您可以为两者定义不同的操作
使用此日志记录者,您只能通过电子邮件收到错误消息,而不是完整的日志,就像有一个fingers\u crossed
类型时一样。如果您希望手指交叉,只需添加另一个处理程序:
another_main:
type: fingers_crossed
action_level: critical
handler: buffered
当然,您需要再次从缓冲区中删除
操作级别。您正在记录严重错误。404默认为“错误”级别,因此将级别设置为“错误”应该可以工作。这将使所有错误都通过电子邮件发送。我希望发送5xx(关键)电子邮件,并记录其余(包括关键)电子邮件。抱歉,如果我没有说明您正在记录严重错误。404默认为“错误”级别,因此将级别设置为“错误”应该可以工作。这将使所有错误都通过电子邮件发送。我希望发送5xx(关键)电子邮件,并记录其余(包括关键)电子邮件。对不起,如果我说得不够清楚的话。对不起,我想我说得不够清楚。我只想通过电子邮件发送5xx个错误。如果我更改主处理程序上的操作级别,我的邮箱中就会出现所有错误。因此,我希望在电子邮件中显示5xx,在prod.log中显示其余内容,抱歉误解-您期望的行为应该是默认行为。您可以尝试使用快速修复它。嗯,即使$this->get('logger')->info('blah')也不会使用我在上面发布的配置将任何内容写入prod.log抱歉,我想我没有说清楚。我只想通过电子邮件发送5xx个错误。如果我更改主处理程序上的操作级别,我的邮箱中就会出现所有错误。因此,我希望在电子邮件中显示5xx,在prod.log中显示其余内容,抱歉误解-您期望的行为应该是默认行为。您可以尝试使用快速修复它。嗯,即使$this->get('logger')->info('blah')也不会使用我上面发布的配置将任何内容写入prod.log