Java 获取会话的跟踪日志(当根日志记录器级别为WARN时)

Java 获取会话的跟踪日志(当根日志记录器级别为WARN时),java,tomcat,log4j,Java,Tomcat,Log4j,我希望能够调试服务器上的特定请求。 我已经关注了KC Baltz对将感兴趣的请求记录到他们自己的日志文件中的响应 开始处理请求时: FileAppender fileAppender = new FileAppender(new PatternLayout(pattern), logFileName, true); fileAppender.setName(sessionId); fileAppender.setThreshold(Level.TRACE); // Add a filter t

我希望能够调试服务器上的特定请求。 我已经关注了KC Baltz对将感兴趣的请求记录到他们自己的日志文件中的响应

开始处理请求时:

FileAppender fileAppender = new FileAppender(new PatternLayout(pattern), logFileName, true);
fileAppender.setName(sessionId);
fileAppender.setThreshold(Level.TRACE);

// Add a filter to identify logs belonging to the current thread
fileAppender.addFilter(new MyCustomFilter(sessionId));
Logger.getRootLogger.addAppender(fileAppender);

// Use log4j MDC to identify logs
MDC.put("log-key", sessionId);
然后,在完成请求处理后:

Appender appender = Logger.getRootLogger().getAppender(sessionId);
Logger.getRootLogger().removeAppender(appender);
MDC.remove("log-key");
相应的过滤器:

public class MyCustomFilter extends Filter {
    private final String id;

    public MyCustomFilter(String id) {
        this.id = id;
    }

    @Override
    public int decide(LoggingEvent event) {
        Object mdc = event.getMDC("log-key");
        if (id.equals(mdc)) {
            return Filter.ACCEPT;
        }
        return Filter.DENY;
    }
}
问题是根记录器的级别设置为“WARN”,我想获取给定sessionId的所有日志(跟踪级别)