2011-08-10 32 views
4

我想要有一個log4j配置,以便日誌文件名應該像$ {System-name} log.log一樣。即如果應用程序在任何系統上啓動,則不更改配置文件或代碼。它應該如上所述生成日誌文件名稱。 謝謝。如何動態更改log4j日誌文件?

+0

請參閱:http://stackoverflow.com/questions/201188/using-system-environment-variables-in-log4j-xml-configuration –

回答

2

我做這種方式:
1)初始化記錄者:

System.setProperty("my.logsDir", vcsLogsDir); 
DOMConfigurator.configure("c:/log4j.xml"); 

2)中的log4j.xml我使用變量:與

<param name="File" value="${my.logsDir}Default.log"/>d 
+0

你能告訴我,它可以如何設置log4j.xml文件的相關路徑而不是絕對路徑例如:DOMConfigurator.configure(「../log4j.xml」)。謝謝。 – Channa

+1

您可以完全按照您的寫法設置相對路徑(「../log4j.xml」)。它會找到你的log4j.xml相對於你的工作目錄。 –

+0

感謝您的反饋。我用ContextClassLoader得到它:DOMConfigurator.configure(Thread.currentThread()。getContextClassLoader.getResource(「。」)。getPath()+「log4j.xml」) – Channa

2

您可以使用Java系統特性${property}語法。有跡象表明,在默認情況下定義的系統屬性的數量,包括

"os.arch"  Operating system architecture 
"os.name"  Operating system name 
"os.version" Operating system version 

對於默認屬性的完整列表,請參閱的System API或System.getProperties().list(System.out)一一列舉。

如果默認屬性不行,那麼您將使用System.setProperty(property, value)頂部添加自己的屬性。