Java 如何在Maven下管理多个log4j.properties文件中的依赖关系?
我有一个maven项目,它有几个依赖项,并使用Java 如何在Maven下管理多个log4j.properties文件中的依赖关系?,java,maven,log4j,Java,Maven,Log4j,我有一个maven项目,它有几个依赖项,并使用log4j.properties控制输出。在某些情况下,同一类可能在具有不同参数的不同属性文件中引用。是否定义了“覆盖”属性的协议,或者它是否取决于加载包的顺序 (我正在查找所有log4j.properties直接位于src/main/resources-这是正确的位置吗?) 更新: 我已经接受了@Assen的答案,因为它是有道理的,尽管它不能使解决方案变得简单。本质上,他建议从jar中排除log4j.properties。原则上我同意,但是它给用户
log4j.properties
控制输出。在某些情况下,同一类可能在具有不同参数的不同属性文件中引用。是否定义了“覆盖”属性的协议,或者它是否取决于加载包的顺序
(我正在查找所有log4j.properties
直接位于src/main/resources
-这是正确的位置吗?)
更新:
我已经接受了@Assen的答案,因为它是有道理的,尽管它不能使解决方案变得简单。本质上,他建议从jar中排除log4j.properties。原则上我同意,但是它给用户带来了控制输出的负担,我的大多数用户都不知道Java是什么,更不用说属性文件了。
也许有一种方法可以重命名每个jar中的属性文件,并使用开关(可能带有-D)激活属性 我经常就项目进行类似的讨论。我认为log4j.properties通常是您希望将其排除在应用程序之外的东西,而不是将其打包并与代码一起交付。日志记录配置:
- 是特定于环境的。编写应用程序时,无法定义所需的附加器、文件位置等
- 它的生命周期与应用程序的生命周期完全不同。部署应用程序后,日志属性可以每天更改几次。重新部署应用程序不应覆盖上次的日志记录设置
开发时,我会注意在路径上设置其中一个子文件夹。当John在他的macbook上开发时,他可能希望将“macbook jihn”放在类路径上,或者创建一个新的类路径。他可以更改日志设置并提交,而不会产生冲突。您可以发布一些示例吗?是的,应用程序资源最合适的位置是
src/main(或者test,如果它们属于测试阶段)/resources
。(我无法控制,通过maven使用)。如果处理某些类型的文档(它报告异常情况),PDFBox可以有大量的调试/信息输出。我有两个包,PDF2SVG(它依赖于PDFBox,有一个log4j.properties来控制它和PDFBox的输出)。它还使用(我的)库EUCLID,它也有log4j.properties。下一个软件包SVGPlus依赖于PDF2SVG,并具有自己的log4j.properties和更严格的控制。我发现我无法控制+1使用的属性。我认为您可能是对的,log4j.properties不应该包含在JAR文件中,但欢迎您提供其他体验。