Laravel Octane使用時に、report()がtrueを返すにもかかわらずカスタム例外がDatadogでエラーとして報告される問題を解決する | GGAMI.NETApp
\
Exceptions
;
use
Exception
;
use
Illuminate
\
Http
\
JsonResponse
;
use
Illuminate
\
Http
\
Request
;
class
CustomErrorException
extends
Exception
{
public
function
render
(
Request
$request
)
:
JsonResponse
{
return
response
(
)
->
json
(
[
'success'
=>
false
,
'message'
=>
$this
->
message
,
]
,
200
)
;
}
public
function
report
(
)
:
bool
{
return
true
;
}
}
上記のコードのように、CustomErrorExceptionを作成し、report()メソッドがtrueを返すようにしました。Laravelでは、これにより例外が報告されなくなります。そのため、PHP-FPMとDatadogを使用している場合、エラーとして記録されません。
しかし、OctaneとDatadogを使用している場合は、この場合でも例外がエラーとして報告されます。
この問題を解決するには、$dontReportのHandler.php配列に次のように追加します。
こうすることで、OctaneとDatadogを使用している場合でも、例外はエラーとして報告されなくなります。
簡単に説明すると、php-fpm + datadogでは、report()がtrueを返すとexception errorは集計されませんが、octane + datadogでは、report()がtrueを返してもerrorとして集計される問題があります。
この問題を解決するには、Handler.phpの$dontReportにException classを追加すれば解決します。