Logback 配置——如何包含 Spring 应用程序版本

Logback config -- how to include Spring Application Version

出于分析目的,我想在所有日志条目中记录应用程序版本(理想情况下,我想通过编辑 logback-spring.xml 文件而不是编写任何 Java 代码来做到这一点) .

我已经成功记录 spring 应用程序名称。

注意显示正确应用程序版本的示例启动日志消息。

根据我的成绩构建——我是否使用正确的实现版本更新了清单文件。为了 Spring 构建执行器的目的,我还设置了 info.build.version=${version}。

请参阅下面的示例 -- 我不确定要输入什么???正确记录应用程序版本。我尝试了很多键,包括:info.build.version、application.version、spring、application.version 等 ..

 <springProperty name="APP_NAME" source="spring.application.name"/>

 <springProperty name="APP_VERSION" source="???"/>

 <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
     <encoder>
         <pattern> version=${APP_VERISON} site=${APP_NAME}  %msg%n </pattern>
     </encoder>
 </appender>

Starting Application v1.0.0-SNAPSHOT with PID 14147

如果您已经设法指示 Gradle 在清单文件中设置 version,那么您可以尝试指示 gradle 替换您的 logback.xml

我不知道Gradle,但是Maven,所以在Maven中:它被称为过滤资源,我认为它在Gradle中是完全相同的:https://dzone.com/articles/resource-filtering-gradle

根据documentation

对于 Maven,您可以使用 资源过滤 从 Maven 项目自动扩展属性。如果你使用 spring-boot-starter-parent 然后你可以通过 @..@ 占位符

引用你的 Maven ‘project properties’

您可以在 application.properties 文件中添加 Maven 项目属性,例如

app.project.version=@project.version@

对于 Gradle,您需要通过配置 Java 插件的 processResources 扩展 Gradle 项目的属性

processResources {
    filesMatching('application.properties') {
        expand(project.properties)
    }    
}

可以通过占位符访问。

app.name=${name}
app.description=${description}
app.version=${version}

您可以使用这些属性添加 logback.xml

谢谢

您可以尝试从 gradle 到 application.property 中的 <%=version%> 版本。

例如,您在 application.property

中有一个 属性 version
version=<%=version%>

那么源可以是 'version' 在 logback 配置中。

  1. 在 pom.xml 中添加了 git-commit-id-plugin 插件。这会在构建目录中创建 git.properties 并使用 build-info.properties.

    更新 META-INF
    <plugin>
        <groupId>pl.project13.maven</groupId>
        <artifactId>git-commit-id-plugin</artifactId>
        <version>4.0.0</version>
        <executions>
            <execution>
                <id>get-the-git-infos</id>
                <goals>
                    <goal>revision</goal>
                </goals>
                <phase>initialize</phase>
            </execution>
            <execution>
                <id>validate-the-git-infos</id>
                <goals>
                    <goal>validateRevision</goal>
                </goals>
                <phase>package</phase>
            </execution>
        </executions>
        <configuration>
            <failOnNoGitDirectory>false</failOnNoGitDirectory>
            <generateGitPropertiesFile>true</generateGitPropertiesFile>
            <generateGitPropertiesFilename>${project.build.outputDirectory}/git.properties</generateGitPropertiesFilename>
        </configuration>
    </plugin>
    
  2. 在 logback.xml 中添加了 MEATA-INF/build-info.properties 作为资源,并使用变量 ${build.version} 来记录版本。

    <property resource="META-INF/build-info.properties" />
    <property name="LOG_PATTERN" value="%level{length=1} %d{yyyy-MM-dd HH:mm:ss.SSS} | buildNumber=${build.version} | UserAgent = %X{User-Agent} | thread=%t | class=%c-%L | message=%msg%n" />