0
直到最近我還在使用spring-boot 1.3.5.RELEASE和以下工作。 Spring引導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放。然後使用logback記錄器將service_name記錄到整個應用程序的每個日誌行中。 即使在子線程中也是如此。 MVC控制器。
我們現在在春天的版本1.4.1.RELEASE和MDC記錄的service_name只在現在的主線程,而不是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」現在下落不明。
2016-11-30 15:17:50,329 [http-nio-9007-exec-2] INFO co.uk.me.controller.MyController - [,,] - Received get <snip>
的變化之前,它看起來像:
2016-11-30 15:17:50,329 [http-nio-9007-exec-2] INFO co.uk.me.controller.MyController - myapp [,,] - Received get <snip>
我可以在該MDC上下文是在控制器方法開始空調試器看到的。
有誰知道哪些變化影響了這種行爲?也許改變春天MVC線程創建?或者一個logback更改? 有沒有辦法設置並保持應用程序範圍內的MDC屬性仍然在spring-boot中?
感謝