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



我正在Spring-Boot应用程序中设置Log4j2。我现在想精确地创建.jar文件的位置。

这是我们从启动脚本启动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.xmllog4j2.xml如Vikas Sachdeva提到的那样,将系统属性占据,而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

最新更新