spring 如何使用命令行重写logback默认变量

s4chpxco  于 5个月前  发布在  Spring
关注(0)|答案(2)|浏览(61)

我在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值。可能的原因是什么?

des4xlb0

des4xlb01#

你应该把-Dlog.root=logappv2/logs放在-jar之前,比如。
java -Dlog.root=logappv2/logs -jar app.jar
参考:Proper usage of Java -D command-line parameters

tzdcorbm

tzdcorbm2#

这是您通过命令行${log.root}传递的变量,但我没有看到它的用法。

相关问题