首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >log4j多个配置文件

log4j多个配置文件
EN

Stack Overflow用户
提问于 2011-11-08 05:37:09
回答 2查看 12.3K关注 0票数 9

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

代码语言:javascript
复制
Web-project
   classes
      log4j.properties
   ProjectB.jar
      com
      log4j.properties
   ProjectC.jar
      com
      log4j.properties and so on. 
EN

回答 2

Stack Overflow用户

发布于 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配置进行编码。然而,这意味着您必须修改源代码并向其中添加代码,这与基础设施相关,并将部署细节与您的应用程序相关联(不是很好)。

票数 5
EN

Stack Overflow用户

发布于 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。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8042945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档