在我提出这个问题之前,我会简要介绍一下我想做什么。我希望能够向朋友展示;当我的Laravel项目发生错误时,我会查看用户,但遗憾的是我不知道该怎么做,希望你们中的一些人能够帮助我?
您好。今天我问一个关于Laravel的问题。很长一段时间我都想在我的laravel项目中记录每一个错误。现在有些人可能会说它很简单,只需覆盖handle()
类中的App\Exceptions\Handler
方法。
虽然这样做比较容易,但它并不能处理每一个错误。我注意到它不处理查询异常。
我要问的是如何处理每个例外情况。我主要想做的是在数据库表中记录错误,并为最终用户禁用一个漂亮的视图。然后,如果我是我的团队中的一个或另一个收到错误的成员,他们可以轻松地检查数据库,而无需向最终用户显示任何关键细节。
我遵循了本教程,但它是相同的,它没有记录每个例外。 http://blog.sarav.co/registering-custom-exception-handler-laravel-5/
答案 0 :(得分:0)
使用set_error_handler设置自定义例外。或者你可以使用log4php我相信他们有一个laravel包。
答案 1 :(得分:0)
您只需在App\Exceptions\Handler::render
方法中添加一些代码,例如:
public function render($request, Exception $exception)
{
if($exception instanceof \Illuminate\Database\QueryException) {
// Do something with the $exception
// dd($exception); // analyze it
// return a response/redirect
}
return parent::render($request, $exception);
}
在这个$exception
实例中,您可以使用以下方法找到许多有用的信息(省略魔术方法,它是get_class_methods
的转储):
array:12 [▼
0 => "__construct"
1 => "getSql"
2 => "getBindings"
3 => "__wakeup"
4 => "getMessage"
5 => "getCode"
6 => "getFile"
7 => "getLine"
8 => "getTrace"
9 => "getPrevious"
10 => "getTraceAsString"
11 => "__toString"
]
此外,属性$exception->errorInfo
也会为您提供一些信息,例如(一个特定的错误信息):
errorInfo: array:3 [▼
0 => "42S22"
1 => 1054
2 => "Unknown column 'ids' in 'field list'"
]
注意:仅供参考,error
和exception
是两个不同的事情,因此set_error_handler和set_exception_handler两者都有不同的原因,错误处理程序不会捕获异常。