我在logback-sring.xml
中有以下变量,我想使用命令行中提供的值覆盖其默认值。
<property name="log_root" value="${log.root:-logapp/logs}"/>
<appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log_root}/app.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log_root}/archived/app.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- keep 30 days worth of history, but at most 1GB -->
<totalSizeCap>1GB</totalSizeCap>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%level %d [%thread] %logger{15} - %msg %ex{2}%nopex%n</pattern>
</encoder>
</appender>
字符串
我试图在jar调用期间覆盖该值:
java -jar app.jar -Dlog.root=logappv2/logs
型
但是应用程序总是使用默认的log.root值。可能的原因是什么?
2条答案
按热度按时间des4xlb01#
你应该把
-Dlog.root=logappv2/logs
放在-jar
之前,比如。java -Dlog.root=logappv2/logs -jar app.jar
个参考:Proper usage of Java -D command-line parameters
tzdcorbm2#
这是您通过命令行${log.root}传递的变量,但我没有看到它的用法。