我正在使用:Mail::later($when, $mailable);
(docs)
我偶然发现在我的failed_jobs
表中,有些条目说某些排队的邮件由于缺少视图而失败。 (docs)
但是幸运的是我注意到了它。
我思考如果排队的邮件失败了,将会发生异常,它将引发异常,然后由于我如何设置App\Exceptions\Handler
和自定义记录器,它将通知我的Slack应用程序在config/logging.php
中。
如何获取App\Exceptions\Handler
来正确报告Mail::later()
或Mail::queue()
的呼叫失败?
答案 0 :(得分:2)
https://laravel.com/docs/5.7/queues#failed-job-events向我展示了我可以编辑boot
的{{1}}函数以使其具有:
App\Providers\AppServiceProvider
要测试该方法是否在本地有效,我在本地Queue::failing(function (JobFailed $event) {
Log::error('JobFailed. ' . json_encode(['connectionName' => $event->connectionName, 'job' => $event->job, 'exception' => $event->exception]));
});
中设置了QUEUE_DRIVER=sync
,然后运行了.env
。
它成功记录了php artisan queue:work --tries=1 --daemon > storage/logs/laravel.log
的异常。
但是请注意,Mail::later
并没有立即更新。大约延迟了一分钟。
答案 1 :(得分:-1)
您可以使用失败的工作表,其中将列出失败的工作。