拦截 Laravel 作业失败事件以更改写入的日志

Intercepting Laravel job failing event to change log written

我可以使用 \Queue::failing() 捕获事件,但是如何防止在检测到特定失败原因时写入 Laravel 日志?

例如,当作业因为尝试次数太多而失败时,MaxAttemptsExceededException 会在失败期间触发。假设我想打断它以向日志消息中添加一些内容,甚至将日志类型更改为 "warning" 而不是 "error"。我该怎么做?

您可以在 Exception Handler Class.

中通过 class 捕获异常

使用report方法:

public function report(Exception $exception)
{
    if ($exception instanceof MaxAttemptsExceededException) {
        // add custom message
        // optionally return parent::report($exception); to continue normal flow
    }

    return parent::report($exception);
}