潜在的记录/ Log4j Clobbering情况

时间:2011-02-11 20:57:44

标签: web-applications tomcat logging log4j

我有两个部署到Tomcat的webapp。该服务以catalina.sh中的-Dlog4j.configuration = log4j.properties启动

有时我注意到只有一个webapps正在登录该文件。我重新启动Tomcat,两者都再次登录。关于冲突可能是什么的任何想法?这不应该是受支持的配置,因为这两个应用程序都在同一个JVM中运行,具有全局配置吗?

我能想到的唯一可能是干扰的是CXF日志配置:META-INF / cxf / org.apache.cxf.Logger

更新

我发现两个webapps仍在记录,但是一个webapp正在记录到文件中的不同位置,所以我会看到类似

的内容
1:59PM - xx
2:00PM - xxxx
1:45PM - xxx

有时会记录到已滚动的文件。

1 个答案:

答案 0 :(得分:1)

我不知道为什么会发生这种情况,但您可以插入一些调试代码,以便在日志记录失败时查看正在发生的情况。这样的事情(代码未经测试!):

Category logger = Logger.getLogger(yourClass);
do {
  Level level = logger.getLevel();
  System.out.println("Log level of " + logger + " is " + level + ". Appenders:");
  for (Enumeration appenders = logger.getAllAppenders() ; appenders.hasMoreElements() ;) {
    System.out.println(appenders.nextElement());
  }
  logger = logger.getParent();
} while (logger != Logger.getRootLogger())

使用System.out.println调试log4j有点讽刺,但是它可以完成这项工作(无论如何都是丢弃代码)。