我有几个项目嵌入在一个网络应用程序中作为jars。每个项目都有一个log4j.properties文件。当删除web应用程序时,使用哪个配置文件,以及如何在jar文件中覆盖log4j.xml中的配置。jars不是web项目。它们更像是服务层代码。在以下方案中,加载log4j.properties文件的顺序是什么
Web-project
classes
log4j.properties
ProjectB.jar
com
log4j.properties
ProjectC.jar
com
log4j.properties and so on. 发布于 2011-11-08 05:47:22
如果您的jars是单独的web应用程序,则每个web应用程序都应该使用它在类路径上首次找到的应用程序(WEB-INF/classes)。
您可以将-Dlog4j.configuration=path_to_file设置传递给tomcat启动程序,以确保它使用您想要使用的设置。然而,根据我的理解和知识,这将是tomcat将用于部署的每个webapp应用程序的一个。
这里的问题是你如何部署你的应用程序。无论是一个tomcat中的所有web应用程序,在这种情况下,您可能希望每个web应用程序使用不同的log4.properties (或log4j.xml),或者在您为tomcat指定一个的情况下,它应该使用您指定的那个。
据我所知,它归结为:要么是在类路径上找到的第一个类路径(记住:每个web应用程序都有自己的类路径),要么是您通过-D设置指定的类路径。
我刚刚找到了这个参考,我认为它很好地总结了在tomcat和部署在tomcat中的and应用程序中进行日志记录的主要概念:http://wiki.apache.org/tomcat/FAQ/Logging
如果您需要对log4j日志进行更多的控制,您可以求助于在java中对log4j配置进行编码。然而,这意味着您必须修改源代码并向其中添加代码,这与基础设施相关,并将部署细节与您的应用程序相关联(不是很好)。
发布于 2014-03-01 05:13:42
如果您在ProjectA、ProjectB和WebProject的公共包中将additivity设置为false,则您的日志将不会重复。
log4j.additivity.logged包= false
例如:
log4j.properies ->项目A、项目B
log4j.additivity.org.spring.framework = false
所有org.spring.framework日志都将来自WebProject,忽略ProjectA和ProjectB。
https://stackoverflow.com/questions/8042945
复制相似问题