残念ながら、あなたが説明したように、これは可能ではないと思います。https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-logging.html#boot-features-custom-log-configurationに従って:
ロギングは ApplicationContext が作成される前に初期化されるため、Spring @Configuration ファイルの @PropertySources からロギングを制御することはできません。ログ システムを変更したり、完全に無効にしたりする唯一の方法は、システム プロパティを使用することです。
git.properties
とbuild-info.properties
が環境に含まれるのが遅すぎて、Logback の初期化中にそれらの値を使用できないと思います (これは、どちらも機能しない理由も説明して@PropertySource("classpath:META-INF/build-info.properties")
います)。
logback-spring.xml
Maven のリソース フィルタリング メカニズムを使用して、ビルド時にビルド情報を挿入できる場合があります。
編集1:
logback-spring.xml
Maven リソース フィルタリングを使用してコミット 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>