Как организовано взаимодействие компонентов для логирования с приминением кибаны, зависимостей ниже, logback-spring.xml (возможно какие то компоненты не указал) в сприг-бут приложении на котлин
        <dependency>
            <groupId>ch.qos.logback.contrib</groupId>
            <artifactId>logback-json-classic</artifactId>
            <version>0.1.5</version>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback.contrib</groupId>
            <artifactId>logback-jackson</artifactId>
            <version>0.1.5</version>
        </dependency>

        <dependency>
            <groupId>net.logstash.logback</groupId>
            <artifactId>logstash-logback-encoder</artifactId>
            <version>8.1</version>
        </dependency>
вот так же фильтра
package ru.mge.estimate.config

import org.slf4j.MDC;
import jakarta.servlet.*;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Component
import java.io.IOException;

@Component
class RequestIdFilter : Filter {
    @Throws(IOException::class, ServletException::class)
    override fun doFilter(request: ServletRequest, response: ServletResponse?, chain: FilterChain) {
        try {
            val httpRequest = request as HttpServletRequest

            val requestId = listOfNotNull(
                httpRequest.getHeader("X-Request-Id"),
                httpRequest.getHeader("request_id"),
                httpRequest.getHeader("request-id"),
            ).firstOrNull()
            if (requestId != null) {
                MDC.put("requestId", requestId)
            }
            chain.doFilter(request, response)
        } finally {
            MDC.remove("requestId")
        }
    }
}

и логбэк файл
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>

    <conversionRule conversionWord="exception" converterClass="net.logstash.logback.stacktrace.ShortenedThrowableConverter"/>

    <appender name="JSON" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
            <providers>
                <timestamp>
                    <fieldName>datetime</fieldName>
                    <pattern>yyyy-MM-dd'T'HH:mm:ssZ</pattern>
                </timestamp>
                <mdc/>
                <pattern>
                    <pattern>
                        {
                            "level": "%level",
                            "logger": "%logger",
                            "message": "%message",
                            "thread": "%thread"
                        }
                    </pattern>
                </pattern>
                <stackTrace>
                    <throwableConverter class="net.logstash.logback.stacktrace.ShortenedThrowableConverter">
                        <maxDepthPerThrowable>30</maxDepthPerThrowable>
                        <maxLength>2048</maxLength>
                        <shortenedClassNameLength>25</shortenedClassNameLength>
                    </throwableConverter>
                    <fieldName>context</fieldName>
                </stackTrace>
            </providers>
        </encoder>
    </appender>

    <!-- Text Appender -->
    <appender name="TEXT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- Profile-based configuration -->
    <springProfile name="kube">
        <root level="INFO">
            <appender-ref ref="JSON"/>
        </root>
    </springProfile>

    <springProfile name="!kube">
        <root level="INFO">
            <appender-ref ref="TEXT"/>
        </root>
    </springProfile>
</configuration>