我被指派寻找“laravel 方式”,了解如何为每种类型的异常设置不同的日志级别。
例如,SmsServiceException 应该报告到通知级别,而 PaymentServiceException - 应该报告到某个自定义级别。
从 Laravel 文档看来,推荐的方法是像这样修改 App\Exceptions\Handler 的报告方法:
if ($e instanceof SmsServiceException) {
$loggingLevel = 'notice';
} elseif ($e instanceof PaymentServiceException) {
$loggingLevel = 'custom';
}
$logger->{$loggingLevel}(
$e->getMessage(),
array_merge(
$this->exceptionContext($e),
$this->context(),
['exception' => $e]
)
);
但我需要找到另一种方法。
类似于在每个异常中添加 logLevel 属性,然后在处理程序中:
$logger->{$e->logLevel}(
$e->getMessage(),
array_merge(
$this->exceptionContext($e),
$this->context(),
['exception' => $e]
)
);
或者将日志级别作为参数传递给异常构造函数:
throw new SmsServiceException('message', $logLevel);
除了上面的第一个方法之外,任何人都可以推荐任何“laravel-way”方法吗?