在具有spring security 4,slf4j(带有log4j2实现)的Web应用程序环境中,有一个过滤器在收到请求后立即在顶部运行,并始终在线程中设置MDC参数,如下所示
MDC.put("ServiceSequence", aSampleKey);
log4j2模式布局有%X{ServiceSequence}
。
对于每个日志行,我都会看到正确的ServiceSequence
,除了从UserDetailsService
的自定义实现生成的日志。在此自定义含义中,%X{ServiceSequence}
始终为空。
当我调试程序时,我发现可能是spring安全线程与我设置MDC的线程不同。这是正确的吗?!
如何在过滤器中设置线程上下文并确保我在每个位置都有它?或者我可以配置spring security将线程参数复制到新的线程上下文中吗?!