【问题标题】:How to populate custom field value for logback?如何为 logback 填充自定义字段值?
【发布时间】:2021-03-20 23:14:53
【问题描述】:

我正在尝试在 sprintboot 中编写一个自定义启动器以进行日志记录。这样所有下游项目都可以遵循相同的登录模式,在类路径中添加启动器。

为此,我尝试创建一个 logback.xml 文件并使用 LogstashEncoder。 在这个项目中,我还使用了 sleuth 和 zipking,这样我就可以看到 traceId 和 spanId。

以下是 logback.xml 文件。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/console.xml"/>
    <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>
            %d{yyyy-MM-dd HH:mm:ss.SSS} %5p [Orders:%thread:%X{X-B3-TraceId}:%X{X-B3-SpanId}] %logger{40} - %msg%n
            </pattern>
        </encoder>
    </appender>
    <appender name="fileout"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>c:/elk/orders4.log</File>
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <maxIndex>8</maxIndex>
            <FileNamePattern>./logs/orders.log.%i
            </FileNamePattern>
        </rollingPolicy>e
        <triggeringPolicy
                class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>128MB</MaxFileSize>
        </triggeringPolicy>

        <encoder class="net.logstash.logback.encoder.LogstashEncoder">
            <customFields>{"tenantId":"log-odyssey"}</customFields>
        </encoder>
    </appender>
    <root level="info">
        <appender-ref ref="fileout" />
        <appender-ref ref="stdout" />
    </root>
</configuration>

现在,如果您将在 RollingFileAppender 中看到,我正在使用一个带有硬编码值的自定义字段。 我想从 http 请求动态填充它的值。因为tenantId 将由请求本身解析。

谁能帮我解决这个问题,我如何动态填充自定义字段值。

【问题讨论】:

    标签: spring-logback logstash-logback-encoder


    【解决方案1】:

    创建一个 Servlet 过滤器,从请求中检索 tenantId 并填充 logback MDC 中的 tenantId 属性。 LogstashEncoder 将自动在日志事件的 JSON 输出中包含来自 MDC 的所有属性。您甚至不需要在 xml 中定义自定义字段。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-27
      • 1970-01-01
      • 1970-01-01
      • 2022-11-11
      • 1970-01-01
      • 2011-08-04
      相关资源
      最近更新 更多