Приложение Logback Sift регистрирует только трассировки стека в файле по умолчанию - PullRequest
0 голосов
/ 17 июня 2019

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

...