在Laravel 5中收听服务提供商的错误

时间:2015-02-02 11:22:35

标签: php laravel laravel-5

我已经使用Laravel 5一段时间了,我正在为我的应用程序创建自己的日志记录层。

由于我想记录失败的查询,我决定为此创建一个服务提供商。

在服务提供商中,我得到了这段代码:

public function boot()
{
    $this->app->error(function (QueryException $ex) {
        dd('test');
    });
}

这应该有效,但事实并非如此。我收到以下错误:

Call to undefined method Illuminate\Foundation\Application::error()

有人知道这里有什么改变。因为我在Application或Container类中找不到error方法。尚未在论坛/ github repo上找到任何内容。

1 个答案:

答案 0 :(得分:0)

在Laravel 5中,捕获错误的工作方式不同。 Source

您可以通过编辑app/Exceptions/Handler.php方法在render()内执行此操作:

public function render($request, Exception $e)
{
    if ($this->isHttpException($e))
    {
        return $this->renderHttpException($e);
    }

    else if ($e instanceof QueryException)
    {
        dd('test');
    }

    else
    {
        return parent::render($request, $e);
    }
}

文档:http://laravel.com/docs/master/errors#handling-errors