log4j多个配置文件

use*_*201 9 log4j

我在Web应用程序中嵌入了几个项目作为jar.每个项目都有一个log4j.properties文件.在部署Web应用程序时,使用了哪个配置文件以及如何在jar文件中覆盖log4j.xml中的配置.这些罐子不是网络项目.它们更像是服务层代码.在以下方案中加载log4j.properties文件的顺序是什么

Web-project
   classes
      log4j.properties
   ProjectB.jar
      com
      log4j.properties
   ProjectC.jar
      com
      log4j.properties and so on. 
Run Code Online (Sandbox Code Playgroud)

mkr*_*kro 5

如果您的jar是单独的Web应用程序,则每个Web应用程序应使用它首先在类路径(WEB-INF/classes)上找到的应用程序.

您可以将-Dlog4j.configuration = path_to_file设置传递给例如tomcat启动,以确保它使用您打算使用它的那个.但是,这将使我的理解和知识成为tomcat将用于部署的每个webapp的一个.

这里的问题是您如何部署应用程序.在一个tomcat中的所有Web应用程序,在这种情况下,您可能希望每个Web应用程序使用不同的log4.properties(或log4j.xml),或者在您为tomcat指定一个Web应用程序的情况下,它应该使用您指定的那个.

据我所知,它归结为:在classpath中找到的第一个(记住:每个web-app都有自己的类路径)或者你通过-D设置指定的那个.

刚刚发现这个参考,我认为很好地总结了在tomcat中部署tomcat和webapps的主要概念:http://wiki.apache.org/tomcat/FAQ/Logging

如果您需要更多地控制log4j日志记录,可以使用java编写log4j配置.但是,这意味着您必须修改源代码并在其中添加代码,这与代码相关,并将部署详细信息与应用程序相关联(不太好).