Java 用JAR加载log4j.properties

Java 用JAR加载log4j.properties,java,jar,log4j,Java,Jar,Log4j,我有一个包含以下清单的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属性文件?这就

我有一个包含以下清单的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.
多谢各位

解决方案: 将清单中的classhpath更改为

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

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

编辑: 对于目录结构,您可以这样称呼它:

PropertyConfigurator.configure("log4j.properties");
编辑2:

此外,您必须为其提供appender:

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
如果您想更好地控制日志记录,请删除第一行(root looger),并将第二行放在最上面的包中,而不是[logger name],以便该包中的所有类都可以使用日志记录


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

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

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

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

PropertyConfigurator.configure(ABC.class.getResourceAsStream(“log4j.properties”))
对我来说是正确的,但基本上您需要将log4j属性文件放在源代码文件夹中(Java类旁边)


或者您可以尝试将其放在外部,并在
getResourceAsStream(“resources/log4j.properties”)
method

log4j.configuration
用于xml配置我的朋友,它与属性文件配合得很好。试试看。使用的jar版本:log4j-1.2.14、slf4j-api-1.5.8、slf4j-log4j12-1.5.8对不起,我的错。它们对xml和属性配置都有一个属性。杜普:就这样解决了我的问题。TNX很多