【发布时间】:2012-12-04 01:40:36
【问题描述】:
我有一个包含多个依赖项的 maven 项目,并使用 log4j.properties 来控制输出。在某些情况下,相同的类可能会在具有不同参数的不同属性文件中被引用。是否有“覆盖”属性的定义协议,还是取决于加载包的顺序?
(我在src/main/resources 下找到所有log4j.properties - 这是正确的位置吗?)
更新: 我已经接受了@Assen 的回答,因为这很有意义,尽管它并不能使解决方案变得简单。本质上,他建议从 jar 中排除 log4j.properties。原则上我同意,但它给用户带来了控制输出的负担,而且我的大多数用户都不知道 Java 是什么,更不用说属性文件了。 也许有一种方法可以重命名每个 jar 中的属性文件并使用开关(可能带有 -D)来激活属性。
【问题讨论】:
-
你能发布一些例子吗?是的,最适合您的应用程序资源的地方是
src/main(or test, if they belong to test phase)/resources。 -
我正在使用子类化 Apache PDFBox 项目 (pdfbox.apache.org) 的代码。 (我无法控制,通过 maven 使用)。如果处理某些类型的文档(它报告异常情况),PDFBox 可以有大量的 DEBUG/INFO 输出。我有两个包,PDF2SVG(它依赖于 PDFBox 并且有一个 log4j.properties 来控制它的输出和 PDFBox 的输出)。它还使用(我的)库 EUCLID,它也有一个 log4j.properties。下一个包 SVGPlus 依赖于 PDF2SVG,并且有自己的 log4j.properties,控制更严格。我发现我无法控制使用的属性