如何使用 Symfony 5.1、Monolog 和 Mailer 组件通过电子邮件配置发送错误?

How to configure sending errors by e-mail with Symfony 5.1, Monolog and Mailer component?

您是否有使用 Symfony 5.1 的 Mailer 组件通过电子邮件发送日志的示例配置。

我们在 Symfony 博客中宣布了此功能,但我无法将正确的配置放入 monolog.yaml

https://symfony.com/blog/new-in-symfony-5-1-misc-improvements-part-3 : 这就是为什么在 Symfony 5.1 中我们添加了一个新的 Monolog 日志处理程序,它使用 Mailer 组件通过电子邮件发送日志。

不幸的是,此添加仅涵盖 monolog-bridge 中的实际 MailerHandler class。这不包括在 monolog-bundle 中配置它的可能性(如果这些组件分布在多个包中,这就是缺点)。

monolog-bundle 中更改的 PR 仍然开放,可以在这里找到:Add Symfony Mailer support #354

如果您不想等待 monolog-bundle 中的更改,您已经可以通过将处理程序定义为服务来使用它,然后在 monolog 配置中将其与 service 类型一起使用。

所以定义你的服务:

services:
    # this configures the "mail" as a prototype, so you can
    # define the sender and recipient mail addresses here
    symfony_mailer_service_template:
        class: Symfony\Component\Mime\Email
        calls:
            - ['from', ['webapp@example.com']]
            - ['to', ['ops@example.com']]
            - ['subject', ['Logs']]

    symfony_mailer_service:
        class: Symfony\Bridge\Monolog\Handler\MailerHandler
        arguments:
            - '@mailer.mailer'
            - '@symfony_mailer_service_template'
            - !php/const Monolog\Logger::DEBUG # log level
            - true # bubble

然后在您的邮件程序配置中,您可以像这样使用它:

monolog:
    handlers:
        main:
            type: fingers_crossed
            handler: deduplicated

        deduplicated:
            type:    deduplication
            handler: symfony_mailer

        symfony_mailer:
            type: service
            id: symfony_mailer_service