Java 如何动态更改log4j日志文件?
我希望有一个log4j配置,这样日志文件名应该像${System name}log.log一样。也就是说,如果应用程序在任何系统上启动,则无需更改配置文件或代码。它应该生成如上所述的日志文件名。 谢谢。我这样做:Java 如何动态更改log4j日志文件?,java,logging,Java,Logging,我希望有一个log4j配置,这样日志文件名应该像${System name}log.log一样。也就是说,如果应用程序在任何系统上启动,则无需更改配置文件或代码。它应该生成如上所述的日志文件名。 谢谢。我这样做: 1) 初始化记录器的方式: System.setProperty("my.logsDir", vcsLogsDir); DOMConfigurator.configure("c:/log4j.xml"); 2) 在log4j.xml中,我使用变量: <param name="F
1) 初始化记录器的方式:
System.setProperty("my.logsDir", vcsLogsDir);
DOMConfigurator.configure("c:/log4j.xml");
2) 在log4j.xml中,我使用变量:
<param name="File" value="${my.logsDir}Default.log"/>d
d
您可以将Java系统属性与${property}
语法一起使用。默认情况下定义了许多系统属性,包括
"os.arch" Operating system architecture
"os.name" Operating system name
"os.version" Operating system version
有关默认属性的完整列表,请参阅API或使用System.getProperties().list(System.out)
列出它们
如果默认属性不起作用,那么您将使用
System.setProperty(property,value)
让top添加您自己的属性 请看:您能告诉我,它如何设置log4j.xml文件的相关相对路径而不是绝对路径例如:DOMConfigurator.configure(../log4j.xml”)。谢谢。您可以完全按照您所写的(“../log4j.xml”)设置相对路径。它会找到相对于您的工作目录的log4j.xml。感谢您的反馈。我是通过ContextClassLoader获得它的:DOMConfigurator.configure(Thread.currentThread().getContextClassLoader.getResource(“.”.getPath()+”log4j.xml))我担心,如果将log4j.xml压缩到jar/war中,它将无法工作。您应该从类路径中定期加载log4j.xml。或者将它从类路径复制到某个临时目录中;DOMConfigurator.configure(url)。非常感谢。祝你玩得愉快!