我在Laravel v6.18项目中为客户工作。
现在,当我尝试随机提交带有大量数据的表格时,我得到的错误如下:
[2020-09-17 10:05:23] local.ERROR: IlluminateValidationValidationException: The given data was invalid. in [LaravelDir]vendorlaravelframeworksrcIlluminateFoundationHttpFormRequest.php:130
Stack trace:
....
我知道这是一个通用的错误消息,用于向最终用户隐藏实际错误,但我希望记录实际错误。
如果我想在不直接编辑供应商包的情况下记录此实际错误,我必须重写,但我不知道要重写哪个类的哪个方法来记录实际的表单请求验证错误(哪个表单字段验证失败(。
有人能帮忙吗?
我建议在report
方法中的Handler
文件中执行此操作,您将检查ValidationException
,然后像一样记录验证错误
if ($exception instanceof ValidationException) {
Log::error("errors", $exception->errors());
}
在较新的laravel版本中,无法在异常处理程序register
方法中捕获验证异常。
在laravel 8.x中,只需覆盖app/Exceptions/Handler.php
文件中的convertValidationExceptionToResponse
方法,就可以记录验证错误。
如以下
public function convertValidationExceptionToResponse(ValidationException $e, $request)
{
// logging here (i'm using a trait to have custom logger but you can use default logger too)
$this->logValidationError($request, $e->errors());
return parent::convertValidationExceptionToResponse($e, $request);
}