如何使用 laravel 5.6 和 monolog 通过电子邮件发送错误日志

How to send error log through email with laravel 5.6 and monolog

在 laravel 5.6 文档中说您可以在创建日志时使用与默认驱动程序不同的驱动程序

Creating Monolog Handler Channels

所以我在 config/logging.php 文件

中尝试了以下内容
'channels' => [
    'stack' => [
        'driver' => 'stack',
        'channels' => ['masterLog', 'daily'],
    ],
    'email' => [
        'driver'  => 'monolog',
        'handler' => Monolog\Handler\SwiftMailerHandler::class,
        'with'    => [
            'mailer' => Mail::to('test@test.com')->send(new App\Mail\TestMail()),
        ],
        'level' => 'debug',
    ],

我用处理程序 Monolog\Handler\SwiftMailerHandler::class 创建了自己的电子邮件通道,我注意到 class 构造函数接收了一个邮件对象,所以我尝试了这个

Mail::to('test@test.com')->send(new App\Mail\TestMail())

但我收到以下错误

RuntimeException A facade root has not been set.

我正在通过这种方式测试错误

 try {
        throw new Exception('Test Error');
    } catch (\Exception $e) {
        Log::stack(['datePayments', 'stack', 'email'])->emergency("user error", ['error' => $e, 'userID'=>Auth::id()]);
    }

那么我该如何配置才能使其正常工作?

这里有一个包 https://github.com/designmynight/laravel-log-mailer 可以将邮件驱动程序添加到 Laravel 的 LogManager 中,它应该可以满足您的需求。