我有一个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.
我还在互联网上的某处读到这可能是一个Java类加载器问题,因此我尝试更改类路径中不同位置的顺序,将log4j.properties放在已包含在类路径中的目录中,等等。 / p>
但我仍然遇到同样的错误。
非常感谢您的帮助!如果您需要任何其他信息,请回来。
答案 0 :(得分:1)
确保log4j使用-Dlog4.debug
您可以按-Dlog4j.configuration=/path/to/file