您好我想在日志模式中显示登录的用户 ID、主机名、IP 地址等。我也在使用 log4j。我正在使用 MDC。在我的主控制器中,我可以看到带有指定模式的日志,但在其他文件日志中我看不到模式,是不是就像我在某个会话中设置了 MDC 并将上下文值再次放入其他控制器中一样?请建议。
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.我错过了什么吗?