我正在使用 Spring Boot/Spring 云流项目
我使用 Logback 进行日志记录,使用 ConsoleAppender 和 LoggingEventCompositeJsonEncoder 作为编码器
当我尝试记录错误时,如果仅传递带有结构化参数的消息或消息,则它可以工作
但是当我添加任何类型的异常/抛出时,根本没有记录
这是将被记录的示例:
appLogger.error("some error message");
appLogger.error("some error message", StructuredArguments.keyValue("param1", "value1"));
这是不会记录的示例:
appLogger.error("some error message", e); // e is some none null of Exception type object
这是我的 logback xml 配置:
<appender name="JSON_CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
<providers>
<contextName>
<fieldName>app</fieldName>
</contextName>
<timestamp>
<fieldName>ts</fieldName>
<timeZone>UTC</timeZone>
</timestamp>
<loggerName>
<fieldName>logger</fieldName>
</loggerName>
<logLevel>
<fieldName>level</fieldName>
</logLevel>
<callerData>
<classFieldName>class</classFieldName>
<methodFieldName>method</methodFieldName>
<lineFieldName>line</lineFieldName>
<fileFieldName>file</fileFieldName>
</callerData>
<threadName>
<fieldName>thread</fieldName>
</threadName>
<mdc />
<arguments>
<includeNonStructuredArguments>true</includeNonStructuredArguments>
</arguments>
<stackTrace>
<fieldName>stack</fieldName>
</stackTrace>
<message>
<fieldName>msg</fieldName>
</message>
</providers>
</encoder>
</appender>
<logger name="application1" additivity="false">
<appender-ref ref="JSON_CONSOLE" />
</logger>
我在这里想念什么?为什么记录器会忽略或因异常错误而失败,根据文档,如果异常是最后一个参数,则应使用 ExtendedThrowableProxyConverter 对其进行解析