当前位置: 首页 > 后端技术 > PHP

Laravel的异常处理和日志

时间:2023-03-29 20:13:23 PHP

学习Laravel和Vuejs,你真的应该来codecasts.com在Laravel应用中使用异常处理其实非常有用,它可以跟踪你的错误在哪里,你的异常信息也可以直接保存到storage/logs/laravel.log,所以这个机制也给了我们查看异常的方便。一些异常没有被处理。然而,在实际应用中,我们并不关心它是否被抛出。比如TokenMismatchException,我觉得线上环境可以直接忽略这个异常,所以在Laravel中,其实我们可以很方便的配置这样的效果。我们可以打开App\Exceptions\Handler文件,在$dontReport中指定。Laravel本身自带了一些不需要管理的异常处理。如果是我们自定义的异常处理,不想关心是否抛出,可以直接配置$dontReport:classHandlerextendsExceptionHandler{protected$dontReport=[MyCustomException::class];}Logtype而如果是抛出的异常,Laravel会将异常信息写入到storage/logs/laravel.log文件中。当然这是默认的情况,因为Laravel其实有四种不同格式的日志记录:单个日志文件,配置为single每天记录一个日志文件,配置为dailySyslog处理,配置为syslog错误日志处理,并配置为错误日志。这里需要注意一点,如果你使用daily配置,Laravel默认只保存最近五天的日志文件。CustomHandler其实在日志背后并没有那么神秘,它使用了PHP社区中一个非常好的日志处理包:Monolog。所以,其实如果你想自定义一个日志处理器(LogHandler),也是很简单的。例如,你可以在bootstrap/app.php中定义它,只需将代码放在返回$app变量之前。伪代码如下:$app->configureMonologUsing(function($monolog){$monolog->pushHandler(newWebhookHandler($webhookUrl));});返回$应用程序;异常分类处理如果你想单独处理这些异常信息,你也可以直接在App\Exceptions\Handler的report()方法中处理。比如你使用sentry这样的服务,只需要在这里添加两行代码:if($this->shouldReport($e)){app('sentry')->captureException($e);}handling和logging是紧密结合的,但是有时候又很灵活,我们可以很方便的定制自己的需求,对异常信息进行分类。关注播客公众号,定时送书,送福利。第一次送书活动点赞最高的获胜者是:conversant,评论内容是:laravel学习的时候看了很多laravist的视频。非常好,跟我一样!这位同学记得把你的联系方式和地址发到公众号。