laravel 报错没有写入日志

laravel的错误处理都在app/Exceptions/Handler.php里,为了方便处理验证类错误,我写了这么一段代码:

public function report(Throwable $throwable)
{
    if ($throwable instanceof ValidationException){
        ...
    }
}

然后laravel就不记录日志了,实际上需要这么写:

if ($throwable instanceof ValidationException){
       ...
}else{
    parent::report($throwable);
}

report就是用来处理异常的,覆盖了父类的report肯定就不执行方法了。

laravel文档原文是这个:

如果你的异常中包含了仅在满足特定条件才报告的自定义报告逻辑,你可能需要指示 Laravel 使用默认的异常处理配置报告异常。你可以在异常的 report 方法中返回 false 实现这个:

/**
 * 报告异常。
 *
 * @return bool|null
 */
public function report()
{
    // 判断异常是否需要自定义报告...

    return false;
}

这个需要在自定义exception中使用,不是在Handler.php中使用,切记。

发表回复

您的电子邮箱地址不会被公开。