这是我在堆栈溢出中的第一篇文章,所以如果我做错了,请通知我。
所以,我正在为客户开发一个平台,我们在交付阶段的时间很短,因此,为了及时完成所有工作,我想更改生产中的错误报告级别。
为了达到这个目的,我去了:供应商> laravel>框架> src>照亮>基础> Bootstrap> HandleExceptions.php - 第27行(我认为)并替换为:
error_reporting(-1);
set_error_handler([$this, 'handleError']);
set_exception_handler([$this, 'handleException']);
register_shutdown_function([$this, 'handleShutdown']);
人:
if(env('APP_DEBUG') == true) {
error_reporting(-1);
set_error_handler([$this, 'handleError']);
set_exception_handler([$this, 'handleException']);
register_shutdown_function([$this, 'handleShutdown']);
}else{
set_error_handler(null);
set_exception_handler(null);
}
一切都像魅力一样,但我想保持好的做法,避免完全弄乱基本代码。
任何人都对我如何覆盖此错误报告有所了解(除非在每个刀片布局上执行此操作 - 我希望将代码重复保持在最低限度)
恢复问题: - 我想set_error_handler(null); set_exception_handler(null); - 原因是:我们按计划进行,并且项目很复杂(很多关系) - 我已经通过在框架本身或每个刀片页面中声明它来解决问题。但为了保持良好的编码实践,我不想搞乱框架,我想避免代码重复。
提前感谢您的帮助。
答案 0 :(得分:1)
我认为您可以使用App:laravel错误来处理错误。
在app/start/global.php
上,你可以这样说:
App::error(function(Exception $exception)
{
Log::error($exception);
});
你可以处理laravel中的所有错误,并在它们发生时做任何你想做的事。
您将在https://laravel.com/docs/4.2/errors#handling-errors
了解更多信息更新:此版本适用于laravel 5.0
public function report(Exception $e)
{
if ($e instanceof CustomException) {
//
}
return parent::report($e);
}
了解更多信息
答案 1 :(得分:0)
您可能知道,PHP中存在各种不同类型的错误:http://php.net/manual/en/errorfunc.constants.php
对于致命/不可恢复的错误,您可能希望保持Laravel错误处理。另一种方法是,您的用户只需看到一个空白的白页,这根本没有帮助,因此我建议您保留实际的错误和异常处理程序。
error_reporting()
功能更改会报告错误。 Laravel使用的-1
值表示报告所有错误。当您通过修改绕过该行时,错误报告级别将回退到php.ini
配置中设置的任何内容。您希望将错误报告设置为始终为此级别。
那么,如何覆盖Laravel设置的error_reporting
级别?
您可以在Laravel之后再次呼叫error_reporting()
,并将其设置为您想要的任何级别。听起来你可能想要这样的东西:
error_reporting(E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED & ~E_WARNING);
你应该把它放在哪里?
在 Laravel设置了错误报告之后运行的任何地方, 错误代码运行之前 具体位置可能会有所不同,具体取决于Laravel的版本。对于5.x,可能采用boot()
方法AppServiceProvider
?