加入收藏 | 设为首页 | 会员中心 | 我要投稿 上海站长网 (https://www.021zz.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

Laravel 的异常处理与日志

发布时间:2022-10-30 17:33:03 所属栏目:PHP教程 来源:未知
导读: 在 Laravel 的应用当中使用异常处理其实是很有用的,它可以追踪到你的错误在哪,并且你的异常信息也是可以直接保存到 `storage/logs/laravel.log` 中的,所以,这样的机制也给了我们查看异

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

# 不处理某些异常

然而在现实的应用中,有些异常处理其实我们根本都不关心它是否抛出了,比如 `TokenMismatchException`,这个异常我觉得在线上的环境是可以直接忽略的,所以在 Laravel 中,其实我们可以很容易就能配置出这样的效果,我们可以打开 `App\Exceptions\Handler` 文件,在 `$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)的话PHP异常处理,也是很简单的,比如你可以在 `bootstrap/app.php` 中定义,就把代码放在返回 `$app` 这个变量之前就可以了,伪代码如下:

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

php抛出异常_PHP异常处理_php catch 所有异常

}); return $app;

# 异常分类处理

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

if ($this->shouldReport($e)) {
  app('sentry')->captureException($e);
}

# 总结

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

(编辑:上海站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!