Spring boot Spring引导将构建信息作为SpringProperty包含在Logback中
我将SpringBoot 2.1与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 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>