gpt4 book ai didi

Spring-Boot 在 Logback 中包含构建信息作为 SpringProperty

转载 作者:行者123 更新时间:2023-12-02 19:54:28 25 4
gpt4 key购买 nike

我使用 SpringBoot 2.1 以及 spring-boot-maven-plugingit-commit-id-plugin 自动使用构建填充执行器信息端点信息。效果很好。我将值分组在 json 属性 buildgit 下。

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

<springProperty scope="context" name="info_version" source="info.build.version"/>
<springProperty scope="context" name="build_version" source="build.version"/>

我这两种情况都没有得到解决。我还尝试手动添加 build-info.properties 作为属性源

@PropertySource("classpath:META-INF/build-info.properties")

...但这似乎也不起作用。

因此,如何在日志消息中包含信息条目中的构建版本、git-commit 或其他内容等属性?

最佳答案

不幸的是,我认为这不可能像你所描述的那样。根据https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-logging.html#boot-features-custom-log-configuration :

Since logging is initialized before the ApplicationContext is created, it is not possible to control logging from @PropertySources in Spring @Configuration files. The only way to change the logging system or disable it entirely is via System properties.

我相信 git.propertiesbuild-info.properties 太晚包含在环境中,并且它们的值在 Logback 初始化期间无法使用(这也解释了为什么@PropertySource("classpath:META-INF/build-info.properties") 也不起作用)。

您可以在构建时使用 Maven 的资源过滤机制将构建信息注入(inject)到 logback-spring.xml 中。

编辑1:

我已经能够使用 Maven 资源过滤在 logback-spring.xml 中注入(inject)提交 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>

编辑2:

@Leikingo 的评论中引用的另一个(更好)解决方案是在 logback 配置文件中导入 git.properties:

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

关于Spring-Boot 在 Logback 中包含构建信息作为 SpringProperty,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57378011/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com