これはなに
- 業務上で得た知識をメモるだけ
- 他人が読む前提で書いていません
Handlerとは?
- Laravelプロジェクト作ると最初から入ってるクラス
- ログ出力・アラート通知・レンダリングなどを行う
なぜ知ったのか
- 特定のアラートのみエラー通知から除外する対応を行ったが、エラー通知を行っている箇所がHandler.php
- renderJsonメソッドでログを出力していたため除外対応を行ったが、reportメソッドでも出力を行っていた
- 結果、reportメソッド側でも同様の除外対応を実施する事となった
- renderJsonメソッドでログを出力していたため除外対応を行ったが、reportメソッドでも出力を行っていた
renderとは?
- 例外をHTTPレスポンスに変換したり
- 例外毎に出力するメッセージを変えたり
- 特定の例外を詰め替えたり
$e instanceof BackedEnumCaseNotFoundException => new NotFoundHttpException($e->getMessage(), $e)
reportとは?
- ログに書いたり
- メールやSlackへ通知を行ったり
- dontreportに設定すればレポートされない
- セキュリティ上報告したくない例外を除外するため
A list of the internal exception types that should not be reported.
protected $internalDontReport = [
AuthenticationException::class,
AuthorizationException::class,
~~~
まとめ
- renderでレンダリングしてreportで通知
- 役割が違うのでそれぞれ適した実装をする