我正在尝试从log4j-1.x升级到log4j-2.3,并在运行时出现以下错误。我有什么想念的吗?
public void debug(String msg) {
appendContext();
logger.debug(msg);
ThreadContext.pop();
}
[5/25/16 20:08:16:748 SGT] 0000006a ServletWrappe E com.ibm.ws.webcontainer.servlet.ServletWrapper服务SRVE0068E:应用程序中Servlet [MWServlet]的一种服务方法引发了异常[DBIN中间件]。创建的异常:[java.util.NoSuchElementException:ThreadContext堆栈为空
在org.apache.logging.log4j.spi.DefaultThreadContextStack.pop(DefaultThreadContextStack.java:185)
在org.apache.logging.log4j.ThreadContext.pop(ThreadContext.java:391)
最佳答案
我找到了解决方案,在调用pop()之前,我们需要检查ThreadContext是否为空:
public void debug(String msg) {
appendContext();
logger.debug(msg);
if(!ThreadContext.isEmpty()){
ThreadContext.pop();
}
}