我正在将SpringBoot 2.1与spring-boot-maven-plugin
和git-commit-id-plugin
一起使用,以使用构建信息自动填充执行器信息端点。效果很好。我正在将值归为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"/>
我两种情况都无法解决。我还尝试通过{p>手动添加build-info.properties
作为属性源
@PropertySource("classpath:META-INF/build-info.properties")
...但这似乎也不起作用。
因此,如何在日志消息中包括诸如build-version,git-commit之类的属性或来自信息条目的其他内容?
答案 0 :(得分:0)
不幸的是,我认为这不是您所描述的那样。根据{{3}}:
由于日志记录是在创建ApplicationContext之前初始化的,因此无法从Spring @Configuration文件中的@PropertySources控制日志记录。更改或完全禁用日志记录系统的唯一方法是通过系统属性。
我认为git.properties
和build-info.properties
包含在环境中为时已晚,并且在Logback初始化期间无法使用它们的值(这也解释了@PropertySource("classpath:META-INF/build-info.properties")
也不起作用的原因)。
您可能可以在构建时使用Maven的资源过滤机制在logback-spring.xml
中插入构建信息。
我已经能够使用Maven资源过滤在logback-spring.xml
中注入提交ID
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
...
</build>
,然后在logback-spring.xml
中:
<encoder class="net.logstash.logback.encoder.LogstashEncoder">
<version>@git.commit.id.abbrev@</version>
</encoder>
@Leikingo在注释中引用的另一种(更好的)解决方案是将git.properties
导入到logback配置文件中:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property resource="git.properties" />
<springProperty scope="context" name="application_name" source="spring.application.name" />
<appender name="jsonConsoleAppender" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="net.logstash.logback.encoder.LogstashEncoder">
<version>${git.commit.id.abbrev}</version>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="jsonConsoleAppender" />
</root>
</configuration>