【问题标题】:How to get a .jar to recognise and use a bundled log4j.xml file?如何让 .jar 识别和使用捆绑的 log4j.xml 文件?
【发布时间】:2010-07-23 11:48:43
【问题描述】:

我正在用 ant 构建一个项目,在构建过程中,我想将 log4j.xml 文件直接捆绑到 .jar 中,以简化分发。我已成功将文件添加到.jar,但似乎无法识别。

我需要做些什么来确保文件被log4j 识别和使用?我是 Java 新手,所以如果可能的话,有一个清晰的描述和例子会很棒!

【问题讨论】:

    标签: java configuration ant jar log4j


    【解决方案1】:

    这会以某种方式起作用。

    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);
       }
    }
    

    【讨论】:

      【解决方案2】:

      您的应用程序是如何被调用的?

      只要 JAR 位于类路径中,其中包含的任何文件也位于类路径中。换句话说,log4j 在找到some.jar!log4j.xml 时应该没有问题,如果 some.jar 在一开始就在类路径上。

      是否从类路径的其他位置获取了其他 log4j 配置文件?您可以将-Dlog4j.debug 添加到应用程序的启动中,以让 log4j 打印有关正在使用的配置文件的调试信息。很有可能是先找到捆绑在另一个 JAR 中的另一个配置文件。

      【讨论】:

      • java -jar myapp.jar;我将向我们的用户提供一个 jar 文件,因此所有内容都包含在该 jar 文件中。
      • 我认为您需要在 Classpath: 文件中的 Classpath: 属性中明确包含 log4j.xml。使用-jar 启动进程与“正常”有点不同
      猜你喜欢
      • 2014-07-25
      • 2015-04-04
      • 1970-01-01
      • 1970-01-01
      • 2016-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-17
      相关资源
      最近更新 更多