laravel 框架中抛出异常时为啥会自动写入一条 error 级别的日志?
问题描述
我们的业务接口中处理非正常流程时都会转为一个通用的异常给抛出去,然后在 Handler 中统一处理。但是近日发现每天会有很多的接口告警,排查后发现我们抛出异常时,Laravel 自动写入了一条「error」级别的错误日志,又因为业务告警程序是根据「error」级别的日志做的告警,才导致了这个问题。
接口文件
public function foo(): Response
{
if(true){
return new Response();
}
//如果出现其他情况,直接抛异常出去
throw new BusinessException('验证码错误', 10025);
}
Handler 文件
public function render($request, Exception|\Throwable $e): Response
{
parent::render($request, $e);
//处理Business异常
if ($e instanceof BusinessException) {
return new Response($e->getCode(), $e->getMessage());
}
}
业务环境
1). 当前使用的 Laravel 版本?
9.52.0
2). 当前使用的 php/php-fpm 版本?
PHP 版本:8.1
php-fpm 版本:8.1
我的疑问
- 为什么 laravel 在运行时遇到抛出的异常,就会自动给日志写入一条 error 级别的日志呢?
- 如何才能关闭这个功能?或者修改写入日志的错误级别?
在 app/Exceptions/Handler.php 文件的 register() 方法中添加代码: