我的项目使用struts2.5.13 + spring5.0.1 + logback1.2.3。
使用新版本的logback,子线程不再从主线程继承MDC值,因此struts2操作中的错误日志无法获取MDC值。
基本问题可能包括以下问题:
我已经阅读了他们的解决方案,但仍然无法理解如何解决我的问题。
如下例所示,我可以通过MDC.getCopyOfContextMap()获取MDC,并在execute方法中设置它。 但这只适用于我指定的动作和方法。
public class TestAction extends ActionSupport {
private Logger log=LoggerFactory.getLogger(PatchAction.class);
private Map<String,String> contextMap = MDC.getCopyOfContextMap();
public String testMethod1(){
MDC.setContextMap(contextMap);
log.info("test1");
return "main";
}
public String testMethod2(){
log.info("test2");
return "main";
}
}
在此示例中,只有method1生成的日志获取MDC值。 方法2或其他操作生成的日志中的MDC值将为null。
我想要一个明确的解决方案来处理所有操作中的所有方法。
How to use MDC with thread pools?展示了如何使其成为现实,但我不知道如何与struts2集成。
我想知道如何包装struts2的动作执行器。