我正在尝试将每个请求记录在不同的文件中。我使用logback的筛选附加程序。它适用于使用从LoggerFactory
中检索到的记录器记录的所有内容(因此logger.info
或logger.debug
可以正常工作),但是使用exception.printStackTrace
记录的内容(因此stderr )仅记录到默认文件,而不记录到与该请求相对应的文件。
我应该怎么做才能使使用printStackTrace打印的内容也进入相应的文件?我知道使用printStackTrace是不好的做法,但是它已在应用程序中使用。
我的登录配置:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/base.xml"/>
<logger name="org.springframework.web" level="DEBUG"/>
<appender name="SIFT" class="ch.qos.logback.classic.sift.SiftingAppender">
<discriminator>
<key>requestId</key>
<defaultValue>default</defaultValue>
</discriminator>
<sift>
<appender name="FILE-${requestId}" class="ch.qos.logback.core.FileAppender">
<file>${requestId}.log</file>
<append>true</append>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%d [%thread] %level %mdc %logger{35} - %msg%n</pattern>
</layout>
</appender>
</sift>
</appender>
<root level="INFO">
<appender-ref ref="SIFT" />
</root>
</configuration>
我使用MDC.put
来设置鉴别符。