Я пытаюсь записать каждый запрос в другой файл.Я использую просеивающее приложение 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
для установки дискриминатора.