1
您好我想在日志模式中显示登录的用户ID,主机名,IP地址等。我使用相同的log4j。我正在使用MDC。在我的主控制器中,我能够看到具有指定模式的日志,但在其他文件日志中,我无法查看模式,是否像我在某个会话中设置了MDC,并将上下文值再次放入其他控制器中? 请建议。MDC不能正常工作Log4j
log4j.properties
log4j.rootLogger=INFO,CONSOLE,R
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=C:/Logs/Test.log
log4j.appender.R.ImmediateFlush=true
log4j.appender.R.Append=true
log4j.appender.R.MaxFileSize=10MB
log4j.appender.R.MaxBackupIndex=10
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d %X{ipAddress} %X{hostName} %X{Asif}- %c - %p - %m%n
---------------------------------
MainController.java
try {
MDC.put("Asif", "Asif");
MDC.put("ipAddress", request.getRemoteAddr());
MDC.put("hostName", request.getServerName());
logger.info("Context Info : " + MDC.get("userId")+MDC.get("ipAddress")+MDC.get("hostName"));
} finally {
MDC.remove("ipAddress");
MDC.remove("hostName");
MDC.remove("Asif");
MDC.clear();
}
我有其他不同的控制器以及。现在,主控制器内的记录器语句以日志模式显示上下文信息,但在其他控制器的其他日志消息中显示上下文信息,而不显示上下文信息。
我的问题。 1.是否需要在所有控制器中添加上下文信息? 2.有没有更好的方法? 3.我错过了什么?
非常感谢Carrilo。 –
在Spring MVC中,您是否具有Java配置而不是web.xml? –
@WebFilter(urlPatterns = {“/ *”},description =“MDC Filter”)将其添加到过滤器类并对其进行扫描。 –