Tomcat WAR的外部log4j.xml文件

Tomcat WAR的外部log4j.xml文件,tomcat,log4j,logging,Tomcat,Log4j,Logging,要求是 有一个问题,通常的位置似乎是在/WEB-INF/classes目录中,但我在这方面有问题。如果我将应用程序作为WAR文件发送,我无法对其进行编辑,这是一个真正的问题 我们有我们的3战,我们用tomcat 6.0.16部署了应用程序。我们希望在外部目录中为每个war配置log4j.xml,并从那里动态加载 我真的不想使用“-Dlog4j.configuration=/Directory/log4j.xml”这个环境设置作为解决方案。因为它将成为默认值,而不是特定于战争 有什么建议吗?感谢您

要求是

有一个问题,通常的位置似乎是在/WEB-INF/classes目录中,但我在这方面有问题。如果我将应用程序作为WAR文件发送,我无法对其进行编辑,这是一个真正的问题

我们有我们的3战,我们用tomcat 6.0.16部署了应用程序。我们希望在外部目录中为每个war配置log4j.xml,并从那里动态加载

我真的不想使用“-Dlog4j.configuration=/Directory/log4j.xml”这个环境设置作为解决方案。因为它将成为默认值,而不是特定于战争


有什么建议吗?感谢您的帮助……

我知道您提到您不想使用启动参数“-Dlog4j.configuration=/Directory/log4j.xml”,但是您是否考虑过使用自定义参数,如

-DappOneLog4jConfig=/directoy/file1.xml
-DappTwoLog4jconfig=/directory/file2.xml
然后在每个war文件中,您可以加载所需的log4j文件。 您可以在启动时加载的类中执行类似的操作

if(System.getProperty("appOneLog4jConfig") != null){
      PropertyConfigurator.configure(System.getProperty("appOneLog4jConfig"));
} else {
      BasicConfigurator.configure();
      Logger.getRootLogger().setLevel(Level.INFO);
}
也就是说,如果我指定了一个属性文件,就使用它。否则,所有内容都默认为Info。
这应该让您可以自由地为每个应用程序/war文件设置log4j文件

是的。我知道它工作得很好,但是对于多个webapps来说,log4j配置的常见最佳实践是什么。我真正想要的是在我的wars中打包了特定于webapp的log4j.xml(不带appender),并且公共log4j.xml被放置在带有appender的@tomcat级别,当webapp1日志出现时,它应该用app1.log记录,第二个应该用app2.log记录。每个webapp都有context.xml,有没有一种方法可以为app特定的值设置一个参数,并在顶级log4j.xml中获取该值,如“”?????