服务器错误类的异常如何记录到日志

程序运行中会抛出很多异常,有表单验证的错误,身份授权的错误,还有一些比如数据库连接错误,redis连接错误,文件权限错误等等的异常

像表单验证、身份授权这类错误可以明确提示用户,但是数据库、redis、文件权限等这类错误只想提示用户服务器错误,具体的错误信息只记录到日志,这些异常该怎么处理?

App\Exceptions\Handler.php

    public function register()
    {
        $this->reportable(function (Throwable $e) {

        });
    }

    public function report(Throwable $e)
    {
        logImport([
            'uri'     => request()->getRequestUri(),
            'headers' => request()->header(),
            'params'  => request()->all(),
            'message' => $e->getMessage(),
        ]);
    }

    protected function unauthenticated($request, AuthenticationException $exception)
    {
        Response::fail('', ResponseCodeEnum::TOKEN_EXPIRE);
    }

    protected function invalidJson($request, ValidationException $exception)
    {
        Response::fail(current($exception->errors())[0], ResponseCodeEnum::FORM_ERROR);
    }
:computer: & :coffee:
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 1

\Illuminate\Foundation\Exceptions\Handler::render 的实现,可选性有很多。

  • 你可以在异常类实现 render 方法, 返回内容作为响应。
  • 如果异常类实现了 \Illuminate\Contracts\Support\Responsable 接口,其的 toResponse 的返回值也可以作为响应结果。
  • 你还可以在 register 方法里面使用 renderable 去注册一个回调函数来处理,来处理并返回作为响应。
  • 最后你还可以重写 render

这些方法都可以用来 提示用户服务器错误,如果你想记录这些日志,可以直接在这里处理,也可以查看 report 的实现。

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!