Logback Sift附加程序仅将堆栈跟踪记录到默认文件

时间:2019-06-17 16:29:45

标签: java spring-boot logback slf4j

我正在尝试将每个请求记录在不同的文件中。我使用logback的筛选附加程序。它适用于使用从LoggerFactory中检索到的记录器记录的所有内容(因此logger.infologger.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来设置鉴别符。

0 个答案:

没有答案