Spring 4.2.1の時点で、Log4jNestedDiagnosticContextFilter
以下に示すように、log4j1.xに対するApacheのEOL宣言に従って非推奨になりました。
対応するJIRAチケット(SPR-13400)を見つけましたが、Log4j 2をSpring環境に持ち込んで、同じことを行うにはどうすればよいLog4jNestedDiagnosticContextFilter
ですか?
をコピーして自分で実装しLog4jNestedDiagnosticContextFilter
、ロガーをLog4j 2に適合させて、に変更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, "", "");
}
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加