首页 > 解决方案 > 在 laravel 中使用日志号在生产模式下显示错误

问题描述

我有一个在laravel 5.8中构建的应用程序,它处于生产模式。由于该网站是实时的,我不想向我们的用户显示任何错误。但是如果发生一些错误,那么我想要日志号或任何指示在该特定时间引发什么错误的参考。

因此,我想知道是否有任何方法可以向我们的用户显示“糟糕,出现问题 ref#123456”这样他们就可以向我们发送屏幕截图或参考号,我们可以通过检查我们的日志文件来跟踪实际发生的情况。

提前致谢。快乐编码。

标签: laravelloggingerror-handlingeloquentruntime-error

解决方案


我认为您可以将日志保存在数据库中并呈现其 ID。

你可以这样做App\Exceptions\Handlerhttps ://laravel.com/docs/5.8/errors

例如:

    /**
     * Render an exception into an HTTP response.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Throwable  $exception
     * @return \Symfony\Component\HttpFoundation\Response
     *
     * @throws \Throwable
     */
    public function render($request, Throwable $exception)
    {
        // Create log in db
        $log = Log::create([
            'message' => $exception->getMessage(), 
            'code' => $exception->getCode(),
            'line' => $exception->getLine(),
        ]);

        // Print log id in logs
        logger("LogId {$log->id}");

        //Return view error with log id
        return return response()->view('errors', ['logId' => $log->id]);
    }


推荐阅读