1

私はSpringBoot 2.1をspring-boot-maven-pluginandで使用し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"/>

どちらの場合も何も解決されません。build-info.propertiesまた、手動でプロパティソースとして追加しようとしました

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

...しかし、これもうまくいかないようです。

では、ログ メッセージの info エントリから build-version や git-commit などのプロパティを含めるにはどうすればよいでしょうか?

4

1 に答える 1

4

残念ながら、あなたが説明したように、これは可能ではないと思います。https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-logging.html#boot-features-custom-log-configurationに従って:

ロギングは ApplicationContext が作成される前に初期化されるため、Spring @Configuration ファイルの @PropertySources からロギングを制御することはできません。ログ システムを変更したり、完全に無効にしたりする唯一の方法は、システム プロパティを使用することです。

git.propertiesbuild-info.propertiesが環境に含まれるのが遅すぎて、Logback の初期化中にそれらの値を使用できないと思います (これは、どちらも機能しない理由も説明して@PropertySource("classpath:META-INF/build-info.properties")います)。

logback-spring.xmlMaven のリソース フィルタリング メカニズムを使用して、ビルド時にビルド情報を挿入できる場合があります。

編集1:

logback-spring.xmlMaven リソース フィルタリングを使用してコミット 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 のコメントで参照されている別の (より良い) 解決策は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>
于 2019-08-17T05:22:19.297 に答える