【问题标题】:Moving log4j.properties out of jar causing log4j warnings (logs are not generated)将 log4j.properties 移出 jar 导致 log4j 警告(不生成日志)
【发布时间】:2014-01-07 07:05:52
【问题描述】:

我有一个带有以下内容的 shell 脚本 test.sh

echo " Running test.sh ..." | log

test_cp=./test/jar/*:./test/lib/*
test_main=com.test.TestApp

java -cp $test_cp $test_main | log

据我了解,上述文件中使用的相对路径是正确的。在这种情况下,log4j jar 位于 ./test/lib/ 并且包含 TestApp (test-app.jar) 的 jar 位于在 ./test/jar/.

现在,当前场景是 log4j.properties 被打包在 test-app.jar 中,所有 Java 类都使用 log4j 记录器来创建日志。 log4j.properties 的内容如下:

log4j.rootLogger=ALL, CONSOLE, FILE


log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d %-5p [%t] %c %M - %n%m%n


log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=test-app.log
log4j.appender.FILE.Append=false
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=%d %-5p [%t] %c %M - %n%m%n

我们希望将 log4j.properties 外部化并将其移到 test-app.jar 之外。为此,我将 log4j.properties 放在 ./test/properties/ 并相应地修改了 shell 脚本,如下所示:

echo " Running test.sh ..." | log

test_cp=./test/properties/*:./test/jar/*:./test/lib/*
test_main=com.test.TestApp

java -cp $test_cp $test_main | log

但是我收到以下错误,并且没有生成日志文件,也没有在控制台上显示任何日志。

log4j:WARN No appenders could be found for logger (com.noknok.util.PropertiesLoader).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

我还在 Internet 上某处读到这可能是 Java 类加载器问题,因此我尝试更改类路径中不同位置的顺序,将 log4j.properties 放置在类路径中已包含的目录中,等等。

但我仍然遇到同样的错误。

非常感谢您的帮助!如果您需要任何其他信息,请返回。

【问题讨论】:

    标签: java shell log4j classloader


    【解决方案1】:

    确保 log4j 使用 -Dlog4.debug 选择正确的 log4j.properties 文件

    您可以通过-Dlog4j.configuration=/path/to/file指定配置文件

    【讨论】:

      猜你喜欢
      • 2022-11-29
      • 2014-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-16
      • 1970-01-01
      相关资源
      最近更新 更多