최근까지는 스프링 부트 1.3.5.RELEASE를 사용하고 있었지만 다음은 작동했습니다. 봄 부팅 MDC 상속 동작이 변경 되었습니까?
@SpringBootApplication
public class MyApplication {
static {
MDC.put("service_name", "myapp");
}
public static void main(String[] args) {
SpringApplication.run(new Object[]{MyConfiguration.class}, args);
}
}
MDC를 넣습니다. service_name은 logback logger를 사용하여 전체 응용 프로그램의 각 로그 행에 기록되었습니다. 이것은 자식 스레드에서도 마찬가지입니다. MVC 컨트롤러.
이제 spring 버전 1.4.1.RELEASE가되었으며 service_name의 MDC 로깅은 MVC 컨트롤러 스레드가 아닌 주 스레드에서만 작동합니다.
는 "myapp와는"여전히 메인 스레드에 기록됩니다
2016-11-30 14:22:08,147 [main] INFO co.uk.me.MyApplication - myapp [,,] - Started MyApplication in 14.276 seconds (JVM running for 308.404)
그러나 컨트롤러 로그 라인 "MyApp를"에서
지금이 없습니다. 나는 MDC 컨텍스트는 컨트롤러 메소드의 시작에 비어있는 디버거에서 볼 수2016-11-30 15:17:50,329 [http-nio-9007-exec-2] INFO co.uk.me.controller.MyController - myapp [,,] - Received get <snip>
: 같은
2016-11-30 15:17:50,329 [http-nio-9007-exec-2] INFO co.uk.me.controller.MyController - [,,] - Received get <snip>
는 변경하기 전에 그것을 보았다.
누구든지이 동작에 어떤 영향을 주 었는지 알고 있습니까? 스프링 MVC 스레드 생성에 대한 변경일까요? 또는 로그백 변경? 봄 부팅시 응용 프로그램 전체 MDC 속성을 설정하고 유지하는 방법이 있습니까?
감사