yii2异常错误的使用和日志的分级配置

小程府 发布于2017-09-04 15:12
  • 995 人浏览

在我们的项目中,有很多的异常处理,我发现用的都很随意,有的抛400,有的抛500,所以我进行了一下测试,基本把yii2常用 的异常处理,都实际了一下,总结如下:

先把http的这种状态码列出来,方便查看

  1.  200: OK。一切正常。
  2.  201: 响应 POST 请求时成功创建一个资源。Location header 包含的URL指向新创建的资源。
  3.  204: 该请求被成功处理,响应不包含正文内容 (类似 DELETE 请求)。
  4.  304: 资源没有被修改。可以使用缓存的版本。
  5.  400: 错误的请求。可能通过用户方面的多种原因引起的,例如在请求体内有无效的JSON 数据,无效的操作参数,等
  6.  401: 验证失败。
  7.  403: 已经经过身份验证的用户不允许访问指定的 API 末端。
  8.  404: 所请求的资源不存在。
  9.  405: 不被允许的方法。 请检查 Allow header 允许的HTTP方法。
  10.  415: 不支持的媒体类型。 所请求的内容类型或版本号是无效的。
  11.  422: 数据验证失败 (例如,响应一个 POST 请求)。 请检查响应体内详细的错误消息。
  12.  429: 请求过多。 由于限速请求被拒绝。
  13.  500: 内部服务器错误。 这可能是由于内部程序错误引起的。

异常抛错和状态码

下面是我进行的一些错误测试:

  1. throw new BadRequestHttpException('未找到');//400.error
  2. throw new UnauthorizedHttpException('ASDFAD');//401验证失败
  3. throw new ForbiddenHttpException('权限不足');//403.error
  4. throw new NotFoundHttpException('404');//404.error
  5. throw new MethodNotAllowedHttpException('方法不允许');//405.error
  6. throw new NotAcceptableHttpException('ASDFAD');//406
  7. throw new ConflictHttpException('ASDFAD');//409
  8. throw new GoneHttpException('不知道');//410.error
  9. throw new UnsupportedMediaTypeHttpException('ASDFAD');//415
  10. throw new RangeNotSatisfiableHttpException('ASDFAD')//416
  11. throw new UnprocessableEntityHttpException('ASDFAD');//422数据验证失败
  12. throw new TooManyRequestsHttpException('ASDFAD');//429
  13. throw new ServerErrorHttpException('ASDFAD');//500

注意:

使用下面的方法来记录日志,然后通过合理的配置,可以很好的区分日志级别,方便查看日志信息

  1. Yii::error('错误了');//200.error
  2. Yii::warning('小小的警告一下');//.200.warning
  3. Yii::info('这里的信息好重要');//200.info
  4. Yii::trace('追踪一下');//200.info

yii2的日志配置

通过等级设置来规划日志的存放位置,将error、warning、info合理的区分开

  1. 配置文件:
  2. 'log' => [
  3. 'traceLevel' => YII_DEBUG ? 3 

继续阅读

还有20%的精彩内容,登录继续阅读