Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Log4j 2的Log4jNestedDiagnosticContextFilter_Java_Spring_Log4j_Log4j2 - Fatal编程技术网

Java Log4j 2的Log4jNestedDiagnosticContextFilter

Java Log4j 2的Log4jNestedDiagnosticContextFilter,java,spring,log4j,log4j2,Java,Spring,Log4j,Log4j2,从Spring 4.2.1开始,Log4jNestedDiagnosticContextFilter在Apache对log4j 1.x的EOL声明之后被弃用,如下所示 我找到了相应的JIRA票()但是如何将log4j2引入到Spring环境中,以实现与log4jnestedagnosticcontextfilter相同的功能?我通过复制log4jnestedagnosticcontextfilter来实现它,并将记录器调整为log4j2,并将NDC更改为ThreadContext import

从Spring 4.2.1开始,
Log4jNestedDiagnosticContextFilter
在Apache对log4j 1.x的EOL声明之后被弃用,如下所示


我找到了相应的JIRA票()但是如何将log4j2引入到Spring环境中,以实现与
log4jnestedagnosticcontextfilter
相同的功能?

我通过复制
log4jnestedagnosticcontextfilter
来实现它,并将记录器调整为log4j2,并将
NDC
更改为
ThreadContext

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.ThreadContext;
import org.springframework.web.filter.AbstractRequestLoggingFilter;

import javax.servlet.http.HttpServletRequest;

public class CustomRequestLoggingFilter extends AbstractRequestLoggingFilter {

  protected final Logger log4jLogger = LogManager.getLogger(getClass());

  @Override
  protected void beforeRequest(HttpServletRequest request, String message) {
    if (log4jLogger.isDebugEnabled()) {
      log4jLogger.debug(message);
    }
    ThreadContext.push(getNestedDiagnosticContextMessage(request));
  }

  @Override
  protected void afterRequest(HttpServletRequest request, String message) {
    ThreadContext.pop();
    if (ThreadContext.getDepth() == 0) {
      ThreadContext.removeStack();
    }
    if (log4jLogger.isDebugEnabled()) {
      log4jLogger.debug(message);
    }
  }

  protected String getNestedDiagnosticContextMessage(HttpServletRequest request) {
    return createMessage(request, "", "");
  }
}