laravel更改错误报告而不会搞乱基本代码?

时间:2016-04-28 10:32:54

标签: php laravel error-handling

这是我在堆栈溢出中的第一篇文章,所以如果我做错了,请通知我。

所以,我正在为客户开发一个平台,我们在交付阶段的时间很短,因此,为了及时完成所有工作,我想更改生产中的错误报告级别。

为了达到这个目的,我去了:供应商> 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);   - 原因是:我们按计划进行,并且项目很复杂(很多关系)   - 我已经通过在框架本身或每个刀片页面中声明它来解决问题。但为了保持良好的编码实践,我不想搞乱框架,我想避免代码重复。

提前感谢您的帮助。

2 个答案:

答案 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);
}

您将在https://laravel.com/docs/5.0/errors#handling-errors

了解更多信息

答案 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