我正在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