Spring boot Spring引导将构建信息作为SpringProperty包含在Logback中

Spring boot Spring引导将构建信息作为SpringProperty包含在Logback中,spring-boot,logback,spring-logback,Spring Boot,Logback,Spring Logback,我将SpringBoot 2.1与SpringBoot maven插件和git提交id插件一起使用,以使用构建信息自动填充致动器信息端点。效果很好。我得到了json属性build和git下的分组值 现在,我还想在json格式的日志消息中包含这些信息(使用logback logstash)。因此,我尝试使用springProperty扩展,但这些元素似乎不能作为环境条目使用 <springProperty scope="context" name="info_version" source=

我将SpringBoot 2.1与
SpringBoot maven插件
git提交id插件
一起使用,以使用构建信息自动填充致动器信息端点。效果很好。我得到了json属性
build
git
下的分组值

现在,我还想在json格式的日志消息中包含这些信息(使用logback logstash)。因此,我尝试使用
springProperty
扩展,但这些元素似乎不能作为环境条目使用

<springProperty scope="context" name="info_version" source="info.build.version"/>
<springProperty scope="context" name="build_version" source="build.version"/>
……但这似乎也不起作用


因此,我如何在日志消息中包含构建版本、git提交或其他信息条目中的属性?

不幸的是,我认为这不可能如您所描述的那样。根据:

由于日志记录是在创建ApplicationContext之前初始化的,因此无法从Spring@配置文件中的@PropertySources控制日志记录。更改或完全禁用日志系统的唯一方法是通过系统属性

我相信
git.properties
build-info.properties
在环境中包含得太晚了,它们的值在回写初始化期间无法使用(这也解释了
@PropertySource(“classpath:META-INF/build-info.properties”)
也不起作用的原因)

您可以在构建时使用Maven的资源过滤机制将构建信息注入
logback spring.xml

编辑1: 我已经能够使用Maven资源过滤将提交ID注入
logback spring.xml

    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
        ...
    </build>
编辑2: @Leikingo在评论中引用的另一个(更好的)解决方案是在logback配置文件中导入
git.properties


${git.commit.id.abbrev}

我有一个类似的问题,我试图访问logback-spring.xml中git.properties中定义的git.commit.id.abbrev(它不起作用)。我怀疑这是因为Logback是在环境中加载git.properties之前初始化的。如果我在bootstrap.yml中将git.commit.id.abbrev设置为任意值,那么我就可以使用它的Logback(不幸的是,这不是一个解决方案)。工作起来很有魅力。我以前做过资源过滤,但完全忘记了这一点。顺便说一句,我还找到了另一种方法,至少对于
git.properties
。使用常规logback属性导入
。然后您可以使用
${git.commit.id.abbrev}
引用id。酷,这甚至比Maven过滤更好!
    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
        ...
    </build>
<encoder class="net.logstash.logback.encoder.LogstashEncoder">
    <version>@git.commit.id.abbrev@</version>
</encoder>