【发布时间】:2010-07-23 11:48:43
【问题描述】:
我正在用 ant 构建一个项目,在构建过程中,我想将 log4j.xml 文件直接捆绑到 .jar 中,以简化分发。我已成功将文件添加到.jar,但似乎无法识别。
我需要做些什么来确保文件被log4j 识别和使用?我是 Java 新手,所以如果可能的话,有一个清晰的描述和例子会很棒!
【问题讨论】:
标签: java configuration ant jar log4j
我正在用 ant 构建一个项目,在构建过程中,我想将 log4j.xml 文件直接捆绑到 .jar 中,以简化分发。我已成功将文件添加到.jar,但似乎无法识别。
我需要做些什么来确保文件被log4j 识别和使用?我是 Java 新手,所以如果可能的话,有一个清晰的描述和例子会很棒!
【问题讨论】:
标签: java configuration ant jar log4j
这会以某种方式起作用。
static // loads before anything else can
{
/*
* If log4j.configuration system property isn't set,
* then assume I'm inside a jar and configure
* log4j using the config file that shipped in the jar.
*/
if (System.getProperty("log4j.configuration") == null)
{
URL url = ClassLoader.getSystemResource("log4j.xml");
DOMConfigurator.configure(url);
}
}
【讨论】:
您的应用程序是如何被调用的?
只要 JAR 位于类路径中,其中包含的任何文件也位于类路径中。换句话说,log4j 在找到some.jar!log4j.xml 时应该没有问题,如果 some.jar 在一开始就在类路径上。
是否从类路径的其他位置获取了其他 log4j 配置文件?您可以将-Dlog4j.debug 添加到应用程序的启动中,以让 log4j 打印有关正在使用的配置文件的调试信息。很有可能是先找到捆绑在另一个 JAR 中的另一个配置文件。
【讨论】:
java -jar myapp.jar;我将向我们的用户提供一个 jar 文件,因此所有内容都包含在该 jar 文件中。
Classpath: 文件中的 Classpath: 属性中明确包含 log4j.xml。使用-jar 启动进程与“正常”有点不同