使用 JAR 加载 log4j.properties

2022-09-03 00:39:31

我有一个包含以下清单的 jar 文件

Manifest-Version: 1.0  
Created-By: 1.7.0_07 (Oracle Corporation)  
Main-Class: test.Main  
Class-Path: ./log4j.properties lib/log4j-1.2.17.jar 

我按如下方式运行该类

java -jar test.jar

这是我的文件夹

lib
log4j.properties
test.jar

为什么我看不到 log4j 属性文件?这就是我所看到的

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

谢谢

解决方案:将我在清单中的类路径更改为 this

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

答案 1

您还可以使用参数启动 JVM:

-Dlog4j.configuration=file:"./your/properties/path/log4j.properties"

以指定外部日志属性的任意位置。我在一个特定的项目中经常使用它。


答案 2

属性文件不在类路径中,您必须提供它并从代码中调用它,如下所示。

编辑:使用您的目录结构,您可以这样称呼它:

PropertyConfigurator.configure("log4j.properties");

编辑2:

此外,您必须为其提供附加器:

log4j.rootLogger=DEBUG, Appender1
log4j.logger.[logger-name]=level, Appender1
log4j.appender.Appender1=org.apache.log4j.ConsoleAppender
log4j.appender.Appender1.layout=org.apache.log4j.PatternLayout
log4j.appender.Appender1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

如果要更好地控制日志记录,请删除第一行(根looger),并将第二行放在放置最顶层包的位置,而不是[记录器名称],以便该包中的所有类都可以使用日志记录。

您可以定义多个追加器,并以这种方式将它们分配给不同的类。


推荐