portavice / laravel-log-errors-to-mail
添加一个日志通道,通过电子邮件将日志消息发送到配置的电子邮件地址
Requires
- php: ^8.1
- illuminate/log: ^10|^11
- illuminate/mail: ^10|^11
- illuminate/support: ^10|^11
- monolog/monolog: ^3
- psr/log: ^3
- symfony/mailer: ^6|^7
Requires (Dev)
- orchestra/testbench: ^8.5|^9.1
- phpunit/phpunit: ^10.4|^11.1
- portavice/laravel-pint-config: ^2.0
README
此包添加了一个基本的日志通道,使用Laravel邮件传输将特定错误级别以上的消息作为电子邮件发送到预配置的收件人。
先决条件
- 已配置默认的Laravel邮件驱动程序
安装
composer require portavice/laravel-log-errors-to-mail
配置
要将您的Laravel应用程序配置为使用日志记录器,您应该在您的logging.php
配置文件中创建一个日志通道。
例如,一个记录到默认堆栈并发送电子邮件通知的堆栈通道
return [ // ... 'channels' => [ // ... 'stack_with_email' => [ 'driver' => 'stack', 'channels' => ['stack', 'log_errors_to_mail'], 'ignore_exceptions' => false, ], ], // ... ];
然后您可以在您的.env
文件中设置日志通道,或在logging.php
中将它设置为默认日志通道。
LOG_CHANNEL=stack_with_email
自定义
此库通过环境变量提供了对默认的laravel_mail_logger
通道的一些自定义。
# defaults # the name of the laravel mailer to use when sending email. (blank by default) # if omitted, uses the global default mailer configured for your laravel application LOG_ERROR_TO_MAIL_MAILER= # recipient of the error emails (blank by default) LOG_ERROR_TO_MAIL_TO= # deduplicate error emails (on by default) LOG_ERROR_TO_MAIL_DEDUPLICATE=true # minimum PSR log level to send emails for (error by default) LOG_ERROR_TO_MAIL_LEVEL=error
您还可以使用artisan vendor:publish
命令发布此包的配置。
$ php artisan vendor:publish --tag=laravel-log-errors-to-mail
选择邮件传输
默认情况下,应用程序使用您Laravel应用程序的默认邮件驱动程序。
要更改使用的驱动程序,您可以发布日志记录器配置并将“laravel_log_errors_to_mail.email_driver”选项更改为所需的邮件驱动程序名称。
邮件驱动程序应该扩展\Illuminate\Mail\Mailer
类,并从Mailer::getSymfonyTransport()
方法返回一个有效的\Symfony\Component\Mailer\Transport\TransportInterface
实例。
已知问题
使用 'log' 传输的邮件驱动程序
使用\Illuminate\Mail\Transport\LogTransport
传输的邮件驱动程序不受支持,并且EmailHandler将回退到NoopHandler
。
然而,这种自动回退当前仅在所选驱动程序直接使用LogTransport
时才有效。如果您例如设置了一个包含LogTransport
邮件驱动程序的RoundRobinTransport
,它最终会陷入无限递归循环。