與JAR

2012-10-05 26 views
14

負載log4j.properties我有以下清單與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 

一個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. 

謝謝

SOLUTION: 改變了我的classhpath在清單這一

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

Dup的:http://stackoverflow.com/questions/8897528/problems-to-put-log4-properties-classpath – Vadzim

回答

9

屬性文件中的類路徑中沒有按」去,你必須提供和呼叫它來自代碼here

編輯: 有了您的目錄結構,你這樣稱呼它:

PropertyConfigurator.configure("log4j.properties"); 

EDIT2:

此外,還必須爲它提供附加目的地:

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並以這種方式將它們分配給不同的類。

12

您還可以使用參數啓動JVM:

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

指定您的外部日誌屬性的任意位置。我在一個特定的項目中使用了很多。

+0

'log4j.configuration '是爲XML配置 – Vadzim

+3

那麼我的朋友,它的工作很好,屬性文件。試試看看。 – Less

+0

使用的jar版本:log4j-1.2.14,slf4j-api-1.5.8,slf4j-log4j12-1.5.8 – Less

0

PropertyConfigurator.configure(ABC.class.getResourceAsStream("log4j.properties"))正常工作,但基本上需要將Log4j屬性文件放在源代碼文件夾(Java Class旁邊)中。

或者你可以嘗試把外面,並給予適當的路徑getResourceAsStream("resources/log4j.properties")方法