2011-08-10 82 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)顶部添加自己的属性。