使用 Monolog 记录完整堆栈跟踪

2022-08-30 11:00:50

我在应用程序中使用Monolog作为独立库,最近我遇到了一个问题。比方说,在我的应用程序中的某个时刻,我捕获了一个异常,我想记录它:

$mylogger->error('Exception caught', array('exception' => $exception));

除了一件小事之外,这很完美 - 它不会记录整个堆栈跟踪。是否可以使用 monolog 内置格式化程序记录异常的完整堆栈跟踪?


答案 1

实际上,从版本开始,可以在日志文件中包含堆栈跟踪:有一种名为.1.12.0LineFormatterincludeStacktraces

要使用此功能,您需要覆盖 monolog 格式化程序的默认行为:

config.yml

monolog:
    handlers:
        main:
            formatter: your.monolog.service.id
            (rest of config is as usual)

服务.yml

services:
    your.monolog.service.id:
        class: Monolog\Formatter\LineFormatter
        calls:
            - [includeStacktraces]

检查 github 以获取更多信息:拉取请求


答案 2

我有一个非常简单的解决方案!!!

$mylogger->error((string) $exception);

推荐