Java 如何定义log4j默认文件位置
我正在为我的java项目设置“log4j”日志框架,如果comand行没有指定Java 如何定义log4j默认文件位置,java,logging,properties,path,log4j,Java,Logging,Properties,Path,Log4j,我正在为我的java项目设置“log4j”日志框架,如果comand行没有指定${File.name}配置属性,我想定义log4j.appender.X.File=${File.name}参数的默认路径。 我需要动态的解决方案: -当我在comand行-->上使用-Dfile.name=C:\log\directory\path\log4j application.logJVM参数运行.jar文件时,框架应该写入我在参数上指定的路径 -当我运行.jar文件而不使用comand行上的JVM参数--
${File.name}
配置属性,我想定义log4j.appender.X.File=${File.name}
参数的默认路径。我需要动态的解决方案:
-当我在comand行-->上使用
-Dfile.name=C:\log\directory\path\log4j application.log
JVM参数运行.jar文件时,框架应该写入我在参数上指定的路径-当我运行.jar文件而不使用comand行上的JVM参数-->时,框架应该在.jar文件路径上写入
我应该在哪里给出默认路径,使我的项目了解应该在哪里写入文件 这是我的实际log4j.properties文件的一部分: 通过附加的设置,应用程序可以部分运行:
1.
java-Dfile.name=C:\log\directory\path\log4j-application.log-jar C:\Users\martin\Desktop\Projects\log4j\log4j\u example.jar
:包括JVM参数,.jar在已定义的JVM参数路径内正确创建了日志文件2.
java-jar C:\Users\martin\Desktop\Projects\Log4j\Log4j_example.jar
:除去JVM参数,.jar无法理解它应该写在哪里,因此没有创建任何文件我原以为,在第二次尝试时,应用程序可以在同一个.jar文件文件夹中写入,因为comand行上没有定义
${file.name}
参数。这不起作用,因为似乎缺少指定要写入的“默认”路径的内容 我还尝试在log4j.properties文件中设置
log4j.appender.file.file=${file.name}/log4j.log
,将java-Dfile.name=C:\log\directory\path \-jar C:\Users\martin\Desktop\Projects\log4j\log4j_example.jar作为comand,并排除路径中的log4j.log名称。
Niether此尝试对我有效,因为系统引发以下错误:
[...]
log4j:ERROR setFile(null,true) call failed.
java.io.FileNotFoundException: \log4j.log (Access denied)
[...]
这一次我希望框架可以在同一个.jar文件文件夹上进行编写,因为comand行上没有定义${file.name}
参数,并且自动获取.jar文件的根(应该是默认的编写文件夹)
我使用的是1.2.17 log4j版本。#在属性文件中这样放置
log4j.appender.file.file=./history.log#在属性文件中这样放置
log4j.appender.file.file=./history.log
[...]
log4j:ERROR setFile(null,true) call failed.
java.io.FileNotFoundException: \log4j.log (Access denied)
[...]