【发布时间】:2017-08-08 11:55:59
【问题描述】:
我正在将 Spring Boot 应用程序作为 jar 运行。
java -Dlogs.location=<path/to/my/logs> -jar my-app.jar
or
java -Dlogs.location=<path/to/my/logs> -jar my-app.jar --logs.location=<path/to/my/logs>
这里是一个示例 log4j2.xml 配置文件
<?xml version="1.0" encoding="UTF-8"?>
<Configuration >
<Properties>
<Property name="base.log.dir">${sys:logs.location}</Property>
</Properties>
....
</Configuration>
Spring boot 应用正在创建 ${sys:logs.location} 文件夹,而不是从 jvm args 正确解析系统属性。
相同的配置文件在 Spring 应用程序中运行良好。 我无法使用我的自定义 log4j2.xml 文件配置 logs.location。任何帮助或建议表示赞赏。
我正在使用log4j2-spring.xml配置log4j2。
我看过StackOverflow q's。这个答案读取属性包。但我想读 sys 属性
【问题讨论】:
-
尝试将
log4j2.xml重命名为log4j2-spring.xml。根据文档,如果您使用的是标准弹簧,则无法完全控制它docs.spring.io/spring-boot/docs/current/reference/html/… -
您好,Oleksandr,感谢您的评论。我已经尝试过 log4j2.xml 和 log4j2-spring.xml 两者。我在 q's 中添加了我的 github 链接。请看一看。
-
这个问题已经在这里回答了stackoverflow.com/a/14877698/5055762
-
BTW java 选项 -Dlogs.location=
必须在 -jar 选项之前 - -jar .jar 之后的所有内容都将被视为应用程序参数,而不是java 选项 - 因此改用 java -Dlogs.location= -jar my-app.jar
标签: spring-boot log4j2