最近まで私はスプリングブート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 putに注意してください。次に、logbackロガーを使用して、アプリケーション全体の各ログ行にservice_nameを記録しました。 これは子スレッドであっても当てはまりました。 MVCコントローラ。
春バージョン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プロパティをSpring起動時に設定して保持する方法はありますか? MDC値はスレッド地元の人々、あなたの春のブートアプリが値を持って開始しますので、唯一のメインスレッド上に保存されている
おかげ