3

我正在使用 SpringBoot 和 Logback 以及 git commit id maven 插件。如何配置 logback 和 SpringBoot 以在我的日志输出中包含执行器返回的 git commit id?我希望每一行输出都包含生成输出行的引导应用程序的 git commit id。

4

1 回答 1

4

默认情况下,会在类路径的根目录中git-commit-id-plugin创建一个名为的文件,其中包含许多属性,包括.git.propertiesgit.commit.id

您可以在 logback 的配置文件中导入这些属性,并在 logback 配置中的任何位置访问这些属性。

例如,您可以在这样的模式中使用它:

<configuration>

    <!-- Expose the properties from the file generated by git-commit-id-plugin -->
    <property resource="git.properties"/>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} ${git.commit.id} - %message%n</pattern>
        </encoder>
    </appender>
    ...
</configuration>

或者(因为您用 标记了这个问题)您可以通过自定义字段或通过模式提供程序logstash-logback-encoder将其包含在 JSON 字段中,如下所示:

<configuration>

    <!-- Expose the properties from the file generated by git-commit-id-plugin -->
    <property resource="git.properties"/>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
            <providers>
                <pattern>
                    <pattern>{"commitId":"${git.commit.id}"}</pattern>
                </pattern>
            ...
            </providers>
        </encoder>
    </appender>
    ...
</configuration>

于 2020-02-10T01:53:34.213 回答