2010-07-23 61 views
2

我正在用螞蟻構建一個項目,並且在構建過程中我想將log4j.xml文件直接捆綁到.jar中,以簡化分發。我已經成功地將該文件添加到.jar,但它似乎沒有被識別。如何讓.jar識別並使用捆綁的log4j.xml文件?

我需要做些什麼來確保文件被log4j識別和使用?我是Java的新手,所以如果可能的話,一個清晰的描述將會很棒!

回答

1

這將以某種方式起作用。

static // loads before anything else can 
{ 
    /* 
    * If log4j.configuration system property isn't set, 
    * then assume I'm inside a jar and configure 
    * log4j using the config file that shipped in the jar. 
    */ 
    if (System.getProperty("log4j.configuration") == null) 
    { 
     URL url = ClassLoader.getSystemResource("log4j.xml"); 
     DOMConfigurator.configure(url); 
    } 
} 
+0

?你意思是? – 2010-07-23 16:06:38

0

您的應用程序如何被調用?

只要JAR位於類路徑上,其中包含的任何文件也都位於類路徑中。換句話說,log4j在找到some.jar!log4j.xml,時應該沒有問題,如果some.jar位於以類路徑開頭的類路徑上。

是否有其他log4j配置文件從類路徑上的其他位置拾取?您可以將-Dlog4j.debug添加到應用程序的啓動中,以使log4j輸出有關正在使用哪個配置文件的調試信息。另一個JAR中綁定的另一個配置文件很可能首先被找到。不知怎的,

+0

'java -jar myapp.jar';我將爲用戶提供一個jar文件,因此所有內容都包含在該jar文件中。 – 2010-07-23 16:34:47

+0

我相信你需要在'MANIFEST.MF'文件的'Classpath:'屬性中明確包含log4j.xml。用'-jar'啓動進程與「正常」有點不同 – 2010-07-23 17:40:08