Spring Boot日志:在log4j2.xml中使用系统变量

时间:2017-03-17 03:40:48

标签: spring-boot log4j2

我正在以jar运行spring boot应用程序。

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启动应用正在创建 $ {sys:logs.location} 文件夹,而不是正确解析jvm args中的系统属性。

相同的配置文件与Spring应用程序一起正常工作。 我无法使用我的自定义log4j2.xml文件配置logs.location。任何帮助或建议表示赞赏。

请参阅此sample project on github

我使用log4j2-spring.xml配置log4j2。

我查看了StackOverflow q's。这个答案读取属性包。但我想读取sys属性

1 个答案:

答案 0 :(得分:1)

定义

之类的属性
<Properties>
    <Property name="filePathVar"> ${sys:filepath:-/logs/app.log} </Property>
</Properties>

,然后在您的xml文件中使用“ $ {filePathVar}”之类的filePathVar 并将其用于运行时参数-https://stackoverflow.com/a/37439625/5055762

注意-/logs/app.log将是默认值,如果没有将其作为运行时参数传递