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

s4chpxco  于 2024-01-05  发布在  Spring
关注(0)|答案(2)|浏览(140)

我在logback-sring.xml中有以下变量,我想使用命令行中提供的值覆盖其默认值。

  1. <property name="log_root" value="${log.root:-logapp/logs}"/>
  2. <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
  3. <file>${log_root}/app.log</file>
  4. <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  5. <fileNamePattern>${log_root}/archived/app.%d{yyyy-MM-dd}.log</fileNamePattern>
  6. <!-- keep 30 days worth of history, but at most 1GB -->
  7. <totalSizeCap>1GB</totalSizeCap>
  8. <maxHistory>30</maxHistory>
  9. </rollingPolicy>
  10. <encoder>
  11. <pattern>%level %d [%thread] %logger{15} - %msg %ex{2}%nopex%n</pattern>
  12. </encoder>
  13. </appender>

字符串
我试图在jar调用期间覆盖该值:

  1. 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}传递的变量,但我没有看到它的用法。

相关问题