【问题标题】:how to get maven project version in logback.xml如何在 logback.xml 中获取 maven 项目版本
【发布时间】:2021-04-30 07:17:21
【问题描述】:

由于我想记录项目版本号,如何在 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>

【问题讨论】:

    标签: java logging log4j logback


    【解决方案1】:

    这就是答案。 图案

       <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>
    

    【讨论】:

      【解决方案2】:

      你可以有一个构建步骤,它需要一个 模板 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 的格式 {...} 很好地混合。因此,您可以将分隔符更改为 ** 或其他内容。

      【讨论】:

      • 上述解决方案应该有效,但我尝试了很多次,但没有任何效果。它不会修改 logback 配置文件。如果您不介意,如果您可以通过 git 或其他方式提供示例项目,那将非常有用,这对我有很大帮助。谢谢
      • 感谢这个想法。我让它工作了。问题在于分隔符
      猜你喜欢
      • 2019-06-11
      • 2023-03-30
      • 2023-04-08
      • 2012-04-11
      • 2011-04-02
      • 2014-06-24
      • 1970-01-01
      • 2017-02-08
      相关资源
      最近更新 更多