资讯专栏INFORMATION COLUMN

Laravel 的异常处理和日志

vvpvvp / 482人阅读

摘要:学和,你真应该来的在的应用当中使用异常处理其实是很有用的,它可以追踪到你的错误在哪,并且你的异常信息也是可以直接保存到中的,所以,这样的机制也给了我们查看异常的便利。自定义其实背后也不是那么神秘,就是使用了社区非常棒的一个日志处理。

学 Laravel 和 Vuejs,你真应该来 codecasts.com

在 Laravel 的应用当中使用异常处理其实是很有用的,它可以追踪到你的错误在哪,并且你的异常信息也是可以直接保存到 storage/logs/laravel.log 中的,所以,这样的机制也给了我们查看异常的便利。

不处理某些异常

然而在现实的应用中,有些异常处理其实我们根本都不关心它是否抛出了,比如 TokenMismatchException,这个异常我觉得在线上的环境是可以直接忽略的,所以在 Laravel 中,其实我们可以很容易就能配置出这样的效果,我们可以打开 AppExceptionsHandler 文件,在 $dontReport 指定就可以了,Laravel 本身就自带了一些不需管的异常处理,如果是我们自定义的异常处理的话,在我们不想管它是否是抛出的话,就可以直接配置 $dontReport :

class Handler extends ExceptionHandler
{
    protected $dontReport = [
        MyCustomException::class
    ];
}
Log 种类

而如果是异常抛出的话,Laravel 会将异常的信息写入 storage/logs/laravel.log 文件中的,当然这是默认的情况,因为 Laravel 其实有四种不同格式的日志记录:

单个 log 文件,配置为 single

每天记录一个 log 文件,配置为 daily

Syslog 处理,配置为 syslog

错误日志处理,配置为 errorlog

在这里需要注意一点是,如果你使用的是 daily 的配置的话,Laravel 默认只保存最近五天的 log 文件。

自定义 Handler

其实 log 背后也不是那么神秘,就是使用了 PHP 社区非常棒的一个日志处理 package : Monolog 。所以,其实如果说你想自定义一个日志处理器(LogHandler)的话,也是很简单的,比如你可以在 bootstrap/app.php 中定义,就把代码放在返回 $app 这个变量之前就可以了,伪代码如下:

$app->configureMonologUsing(function ($monolog) {
    $monolog->pushHandler(
        new WebhookHandler($webhookUrl)
    );
});

return $app;
异常分类处理

如果你想分开处理这些异常信息,你也是可以直接在 AppExceptionsHandler 的 report() 方法做处理的,比如说,如果你使用了类似 sentry 这样的服务,就是在这里添加两行代码就OK了:

if ($this->shouldReport($e)) {
  app("sentry")->captureException($e);
}
总结

Laravel 的异常处理和日志紧密结合,但是有时很灵活的,我们还是很容易地自定义自己的需求和分类处理异常信息。

关注 codecasts 公众号,定时送书,送福利

第一次点赞最高送书活动的中奖同学为:conversant,评论的内容是:laravel 学习过程中看了很多 laravist 的视频,很赞,顶我!这位同学记得向公众号发你的联系方式和地址。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/23156.html

相关文章

  • Laravel核心解读--异常处理

    摘要:请求未通过的验证时会抛出此异常。异常处理是非常重要但又容易让开发者忽略的功能,这篇文章简单解释了内部异常处理的机制以及扩展异常处理的方式方法。 异常处理是编程中十分重要但也最容易被人忽视的语言特性,它为开发者提供了处理程序运行时错误的机制,对于程序设计来说正确的异常处理能够防止泄露程序自身细节给用户,给开发者提供完整的错误回溯堆栈,同时也能提高程序的健壮性。 这篇文章我们来简单梳理一下...

    includecmath 评论0 收藏0
  • Laravel 异常处理

    摘要:在通常情况下,会自动将异常信息分为两种格式来处理或者。而在这之前,它会把基本所有的异常信息先处理为后面讲一下常见的异常处理。认证异常处理认证异常是指,这个是由的方法来处理的。 学 Laravel 和 Vuejs,来 codecasts.com 看高质量视频教程 之前的一篇文章介绍了 Laravel 的异常和日志的一些情况,本文来看看 Laravel 在处理异常返回的时候是什么样的流程。...

    shadajin 评论0 收藏0
  • Laravel学习笔记之bootstrap源码解析

    摘要:总结本文主要学习了启动时做的七步准备工作环境检测配置加载日志配置异常处理注册注册启动。 说明:Laravel在把Request通过管道Pipeline送入中间件Middleware和路由Router之前,还做了程序的启动Bootstrap工作,本文主要学习相关源码,看看Laravel启动程序做了哪些具体工作,并将个人的研究心得分享出来,希望对别人有所帮助。Laravel在入口index...

    xiaoxiaozi 评论0 收藏0
  • Laravel 中使用 Slack 进行异常通知

    摘要:是一款即时通信软件,类似于,它提供开放的,可以调用它向自己团队中指定的个人或者频道发送消息,因此用它来进行异常通知是再合适不过的。这样,当程序中出现异常时,运维能在第一时间收到相关的通知信息,方便及时处理了。 异常处理是软件开发过程中无法逃避的问题。对于一套设计良好代码高效的程序,出现异常的可能性会比较低,但这并不意味着不会出现异常,有些异常甚至会引起严重的后果,所以如何及时的发现程序...

    imccl 评论0 收藏0
  • Laravel Telescope:优雅应用调试工具

    摘要:文章转自视频教程优雅的应用调试工具新扩展是由和开源的应用的调试工具。计划任务列出已运行的计划任务。该封闭函数会被序列化为一个长字符串,加上他的哈希与签名如出一辙该功能将记录所有异常,并可查看具体异常情况。事件显示所有事件的列表。 文章转自:https://laravel-china.org/topics/19013视频教程:047. 优雅的应用调试工具--laravel/telesco...

    MasonEast 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<