【发布时间】:2017-06-08 13:01:01
【问题描述】:
我想在 Logback (1.2.1) 中定义一个属性/变量:
- 有默认值
- 可以通过 Java 命令行选项覆盖
基本上,在开发过程中,我希望 Maven 使用类似这样的方式调用 maven-surefire-plugin:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<systemPropertyVariables>
<log.dir>${project.build.directory}/logs</log.dir>
</systemPropertyVariables>
</configuration>
</plugin>
(我确信以上工作正常,因为我有其他属性正在以这种方式进行测试,并且这些属性按预期工作)。
目前,我有以下logback.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration>
<configuration scan="true" scanPeriod="30 seconds" debug="false">
<property name="log.dir" value="."/>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.dir}/logs/my.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>strongbox_%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<fileNamePattern>strongbox-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<maxFileSize>128MB</maxFileSize>
<maxHistory>31</maxHistory>
<totalSizeCap>1GB</totalSizeCap>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<charset>UTF-8</charset>
<pattern>%d{HH:mm:ss.SSS dd-MM-yyyy} | %-5.5p | %-20.20t | %-50.50logger{50} | %m%n</pattern>
</encoder>
</appender>
...
</configuration>
-Dlog.dir=foo/logs,它只是被忽略了,日志文件正在当前目录中生成。我在这里做错了什么?它需要一个范围吗?是否需要设置if 条件?
【问题讨论】:
-
请用双引号 (") 包裹您的路径参数。它应该看起来像 -Dlog.dir="foo/logs"
-
@eg04lt3r,谢谢,但这不是问题。
-
我认为你只能用正确的属性覆盖 logback 文件。请查看此链接stackoverflow.com/questions/32658635/…。
-
这涉及到每个环境有一个不同的
logback.xml文件,这也不是我想做的。据我了解,Logback 支持properties,可以在logback.xml文件中使用。我希望能够为logback.xml中的属性定义一个默认值,以防不通过-Dproperty1=....从控制台覆盖它。
标签: java maven logback maven-surefire-plugin