Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Logging 如何通过电子邮件发送严重错误并将其余错误记录到prod.log_Logging_Symfony - Fatal编程技术网

Logging 如何通过电子邮件发送严重错误并将其余错误记录到prod.log

Logging 如何通过电子邮件发送严重错误并将其余错误记录到prod.log,logging,symfony,Logging,Symfony,一定是一些非常琐碎的事情,但我不能让symfony2通过电子邮件发送一些错误(5xx)并简单地将其余的(信息级别)记录到文件中 这是我所拥有的,几乎是一份完整的 它确实会通过电子邮件发送5xx错误,但在cookbook示例中的prod.log中不会出现404错误或应用程序信息消息: 邮件处理程序是一个手指交叉的处理程序,这意味着只有在达到操作级别(在本例中为关键级别)时才会触发它。然后,它会记录所有内容,包括操作级别以下的消息。只有5xx HTTP代码错误才会触发临界级别。处理程序设置意味着输出

一定是一些非常琐碎的事情,但我不能让symfony2通过电子邮件发送一些错误(5xx)并简单地将其余的(信息级别)记录到文件中

这是我所拥有的,几乎是一份完整的


它确实会通过电子邮件发送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