我正在尝试在 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 将从请求本身解决。
有人可以帮我解决这个问题如何动态填充自定义字段值。