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_Properties_Path_Log4j - Fatal编程技术网

Java 如何定义log4j默认文件位置

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参数--

我正在为我的java项目设置“log4j”日志框架,如果comand行没有指定
${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)
[...]