如何将 log4j.property 设置为 .jar 位置

How to set log4j.property to .jar location

我正在 Spring-boot 应用程序中设置 Log4j2。我现在想在 .jar 文件所在的位置创建一个 /log 目录。

这是必需的,因为我们从启动脚本启动 java 应用程序,并且配置应该适用于 windows 和 unix 开发人员计算机以及服务器。

我已经尝试过:

<RollingFile name="FileAppender" fileName="./logs/mylog.log" 
             filePattern="logs/mylog-%d{yyyy-MM-dd}-%i.log">

它只是在 jar 启动的目录中创建一个日志文件夹。

然后我读到我应该使用 .\log/mylog.log 作为 .\ 指向 jar 文件的目录。 但随后它只会创建一个名为 .\log.

的文件夹

我还尝试使用 jvm 参数进行配置,并在 log4j2.xml 处调用它们:${logFile}。现在创建了一个名为 '${logFile}.

的目录

唯一有效的 ${} 命令是 log4j 配置文件的目录。但因为它在罐子里,它只会让我得到一个非常无用的文件夹结构

提前致谢

编辑:最后我所做的是设置两个配置文件,log4j2.xml 和 log4j2-prod.xml 正如 Vikas Sachdeva 提到的,log4j2.xml 采用了系统 属性,而 prod.xml 对位置进行了硬编码。 不是我正在寻找的解决方案,但它确实有效。

一种解决方案是通过系统属性传递日志目录位置。

配置文件看起来像-

<RollingFile name="FileAppender" fileName="${sys:basePath}/mylog.log" 
             filePattern="${sys:basePath}/mylog-%d{yyyy-MM-dd}-%i.log">

现在,将包含 JAR 文件的目录的绝对路径传递给 VM 参数 basePath -

java -jar myapp.jar -DbasePath=/home/ubuntu/app