Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何动态更改log4j日志文件?_Java_Logging - Fatal编程技术网

Java 如何动态更改log4j日志文件?

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

我希望有一个log4j配置,这样日志文件名应该像${System name}log.log一样。也就是说,如果应用程序在任何系统上启动,则无需更改配置文件或代码。它应该生成如上所述的日志文件名。 谢谢。

我这样做:
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)。非常感谢。祝你玩得愉快!