car*_*ing 6 java logback maven maven-surefire-plugin
我想在 Logback (1.2.1) 中定义一个属性/变量:
基本上,在开发过程中,我希望 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>
Run Code Online (Sandbox Code Playgroud)
(我确信上述工作正常,因为我有其他属性以这种方式传递给测试,并且这些属性按预期工作)。
目前,我有以下几点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>
Run Code Online (Sandbox Code Playgroud)
的-Dlog.dir=foo/logs,它只是被忽略和日志文件在当前目录中产生。我在这里做错了什么?它需要一个范围吗?需要if设置条件吗?
小智 11
如果您需要一个变量,例如 called log.file.root,它应该默认为 value app-logs,请将其定义为:
<property name="LOG_ROOT" value="${log.file.root:-app-logs}" />
然后${LOG_ROOT}在需要的地方使用。
这个变量可以通过命令行覆盖:
-Dlog.file.root=/home/user/logs
Run Code Online (Sandbox Code Playgroud)
参考:https : //logback.qos.ch/manual/configuration.html ->“变量的默认值”
您指定 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>
Run Code Online (Sandbox Code Playgroud)
在您的情况下,您希望无论执行的插件如何,都绑定该属性。不仅用于测试执行。
所以你应该使用 <build>pom.xml 标签中声明的属性。
<build>
...
<properties>
<log.dir>${project.build.directory}/logs</log.dir>
</properties>
...
</build>
Run Code Online (Sandbox Code Playgroud)
为了将 logback 配置中使用的 Maven 属性替换为从 pom 计算的实际值,您必须启用 Maven 资源过滤:
...
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
...
Run Code Online (Sandbox Code Playgroud)
当然,Logback 配置必须位于该src/main/resources文件夹内(此文件夹或子文件夹)。
| 归档时间: |
|
| 查看次数: |
8240 次 |
| 最近记录: |