如何在 logback.xml 中获取 Maven 项目版本

how to get maven project version in logback.xml

我想记录项目版本号,如何在logback配置文件中获取maven项目版本。 这是 Maven 文件。

<groupId>com.shanil</groupId>
<artifactId>loggingDemo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>loggingDemo</name>
<description>Demo project for Spring Boot logging</description>

这里是logback配置文件

 <appender name="Console"
    class="ch.qos.logback.core.ConsoleAppender">
    <layout class="ch.qos.logback.classic.PatternLayout">
        <Pattern>
            CEF:1|CompanyTest|%X{nameofapplication:-loggingDemo}|**version number here**| %msg%n 
        </Pattern>
    </layout>
</appender>

你可以有一个构建步骤,它采用 模板 logback 文件并填充一些占位符。从 logback 的角度来看,版本将只是一个任意字符串,就像 CEF:1|CompanyTest| 部分一样。

Maven资源插件应该可以实现这个。它使用“过滤”来替换占位符。

<build>
    <resources>
        <resource>
            <includes>
                <include>some/dir/logback.template.xml</include>
            </includes>
            <targetPath>some/outputpath/logback.xml</targetPath>
            <filtering>true</filtering>
        </resource>
    </resources>
</build>

您的 logback 模板看起来像这样

<Pattern>
    CEF:1|CompanyTest|%X{nameofapplication:-loggingDemo}|${project.artifact.id}| %msg%n 
</Pattern>

您可能想尝试更改分隔符;不确定默认格式 ${...} 是否可以与 logback 的格式 {...} 很好地混合。因此,您可以将分隔符更改为 ** 或其他内容。

答案在这里。 模式

   <Pattern>
    CEF:1|CompanyTest|%X{nameofapplication:-loggingDemo}|${project.artifact.id}| %msg%n 
</Pattern>

pom.xml

     <resources>
              <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
                <includes>
                    <include>logback-test.xml</include>
                </includes>
             </resource>

        </resources>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <configuration>
                    <useDefaultDelimiters>false</useDefaultDelimiters>
                    <encoding>UTF-8</encoding>
                    <delimiters>
                        <delimiter>${*}</delimiter>
                    </delimiters>
                </configuration>
            </plugin>
      </plugins>