【问题标题】:Should log4.properties be on the classpath?log4.properties 应该在类路径上吗?
【发布时间】:2012-02-12 10:16:41
【问题描述】:

我在将 log4j.properties 文件放在类路径上时遇到了一些问题。我可以在开发时使用它(Eclipse Indigo),但是当我将我的应用程序导出为 JAR 时,我不能。

我为导出的 JAR 手工制作了一个 MANIFEST.MF 文件:

Manifest-Version: 1.0
Main-Class: main.Program
Class-Path: lib/log4j.properties lib/log4j-1.2.15.jar

然后将 JAR 放在这个文件组织上:

folder
  |-------- app.jar
  |-------- lib
             |--------- log4j.properties
             |--------- log4j-1.2.15.jar

当我尝试运行 app.jar 时,他们找到 log4j.jar 但没有找到 log4j.properties:

log4j:WARN No appenders could be found for logger (main.Program).
log4j:WARN Please initialize the log4j system properly.

我的 log4j.properties 文件是这样的:

log4j.rootLogger=INFO, stdout, file

PATTERN=[%d] [%p] [%c{1}]: %m%n

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=${PATTERN}

log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.DatePattern='.'yyyy-MM-dd
log4j.appender.file.File=${logger_file_path}
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=${PATTERN}

【问题讨论】:

    标签: java log4j manifest manifest.mf


    【解决方案1】:

    不要将log4j.properties 本身放在类路径中,而是放在包含该文件的目录中。

    Class-Path: lib lib/log4j-1.2.15.jar
    

    【讨论】:

    • 我已经更正了将 log4j.properties 更改为“文件夹”(JAR 存在的位置)并将类路径更改为“.lib/log4j-1.2.15.jar”。在此之前,我尝试了几个“lib”的文件夹路径(例如 /lib/、lib/、./lib/),但都没有成功。
    • 一个旧线程,但只想补充一点,这种方法确实有效。这种方法的另一个好处是用户可以根据需要更改日志级别,因为配置文件位于任何 jar 之外。
    【解决方案2】:

    log4j.properties 添加到app.jar

    【讨论】:

    • 现在我更喜欢在外部使用它
    【解决方案3】:

    我知道三种方法。

    1. log4j.properties 添加到app.jar
    2. log4j.properties 放入“文件夹”(JAR 所在的位置)并将类路径更改为.lib/log4j-1.2.15.jar
    3. 例如将log4j.properties放到名为“conf”的文件夹中,并将类路径更改为./conf/

    我试过了,效果很好。

    【讨论】:

    • 非常感谢。我的英语很差!
    【解决方案4】:

    另一种方法: -Dlog4j.configuration=file:"./log4j.properties"

    【讨论】:

    • 对于 log4j 版本 2 使用:-Dlog4j.configurationFile=file:"YourPathHERE/log4j2.xml"
    【解决方案5】:

    尝试执行:

    javar -jar -Dlog4j.configuration=file:"./log4j.properties" app.jar

    【讨论】:

      【解决方案6】:

      我尝试了 Jesper 的答案,起初它没有用。然后我尝试了

      Class-Path: lib/ lib/log4j-1.2.15.jar
      

      然后它就起作用了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-05-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多