Logback-spring.xml невозможно сжать трассировку многострочного стека в одну строку

#logback #spring-logback

Вопрос:

Я перепробовал несколько решений на SO, но ни одно из них, похоже, не работает для меня. Я тоже довольно новичок в обратном входе, возможно, поэтому я не могу найти правильный подход для своего случая использования.

По сути, мы отправляем журналы в централизованно управляемую службу журналов, где нам требуется отправлять трассировки стека в одной строке, чтобы избежать увеличения скорости приема (каждая строка-это новый журнал в службе журналов) и упростить отладку.

Пример журнала ОШИБОК:

14:50:41.856 ОШИБКА [] 8 — [трассировка=394a5287-6719-41b3-91e3-47b68b356856,интервал=394a5287-6719-41b3-91e3-47b68b356856] [причал-274] c.e.f.s.c.a.контроллеры.Базовый контроллер : Ошибка при обработке запроса:

com.Класс исключений : Произошло исключение

по адресу com.Какой-то класс.какая-то функция(какой-то класс:237)

и так далее, я хочу, чтобы все это было в одном заявлении

Вот как logback-spring.xml выглядит мой файл

 <?xml version="1.0" encoding="UTF-8"?>

<configuration>

    <!-- Read https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-logging.html -->

    <!-- Taken from https://github.com/spring-projects/spring-boot/blob/master/spring-boot/src/main/resources/org/springframework/boot/logging/logback/defaults.xml -->
    <conversionRule conversionWord="clr"
                    converterClass="org.springframework.boot.logging.logback.ColorConverter" />
    <conversionRule conversionWord="ex"
                    converterClass="org.springframework.boot.logging.logback.ThrowableProxyConverter" />
    <conversionRule conversionWord="wex"
                    converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
    <conversionRule conversionWord="wEx"
                    converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />

    <!-- We use an additional new line %n at the end of every line so that read_mode=1
       can be enabled for log service This enables us to add stack traces to the corresponding
       error line automatically. See https://sites.google.com/a/flipkart.com/logsvc/home/components/ingestion-frontend/file-based-handoff/nuances -->
    <property name="CONSOLE_LOG_PATTERN"
              value="%n%clr(%d{HH:mm:ss.SSS}){faint} %highlight(${LOG_LEVEL_PATTERN:-%5p}) [%marker] %clr(${PID:- }){magenta} %clr(---){faint} [trace=%X{X-Trace-Id:-},span=%X{X-Span-Id:-}] %magenta([%t]){faint} %yellow(%-40.40logger{39}){cyan}%clr(:){faint} %m${LOG_EXCEPTION_CONVERSION_WORD:-%throwable}%n" />

    <appender name="DEBUG_LEVEL_REMAPPER"
              class="org.springframework.boot.logging.logback.LevelRemappingAppender">
        <destinationLogger>org.springframework.boot</destinationLogger>
    </appender>

    <logger name="org.apache.catalina.startup.DigesterFactory" level="ERROR" />
    <logger name="org.apache.catalina.util.LifecycleBase" level="ERROR" />
    <logger name="org.apache.coyote.http11.Http11NioProtocol" level="WARN" />
    <logger name="org.apache.sshd.common.util.SecurityUtils" level="WARN" />
    <logger name="org.apache.tomcat.util.net.NioSelectorPool" level="WARN" />
    <logger name="org.crsh.plugin" level="WARN" />
    <logger name="org.crsh.ssh" level="WARN" />
    <logger name="org.eclipse.jetty.util.component.AbstractLifeCycle"
            level="ERROR" />
    <logger name="org.hibernate.validator.internal.util.Version" level="WARN" />
    <logger
            name="org.springframework.boot.actuate.autoconfigure.CrshAutoConfiguration"
            level="WARN" />
    <logger name="org.springframework.boot.actuate.endpoint.jmx"
            additivity="false">
        <appender-ref ref="DEBUG_LEVEL_REMAPPER" />
    </logger>

    <!-- http://logback.qos.ch/manual/appenders.html -->


    <!-- Taken from https://github.com/spring-projects/spring-boot/blob/master/spring-boot/src/main/resources/org/springframework/boot/logging/logback/console-appender.xml -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
            <charset>utf8</charset>
        </encoder>
    </appender>

    <!-- Log to the console in addition to the log file -->
    <root level="INFO">
        <appender-ref ref="CONSOLE" />
    </root>

</configuration>
 

Я знаю, что мне нужно обновить эту строку

     <property name="CONSOLE_LOG_PATTERN"
              value="%n%clr(%d{HH:mm:ss.SSS}){faint} %highlight(${LOG_LEVEL_PATTERN:-%5p}) [%marker] %clr(${PID:- }){magenta} %clr(---){faint} [trace=%X{X-Trace-Id:-},span=%X{X-Span-Id:-}] %magenta([%t]){faint} %yellow(%-40.40logger{39}){cyan}%clr(:){faint} %m${LOG_EXCEPTION_CONVERSION_WORD:-%throwable}%n" />
 

но я не могу понять, как это сделать.

Вот что я попробовал

 <property name="CONSOLE_LOG_PATTERN"
              value="%n%clr(%d{HH:mm:ss.SSS}){faint} %highlight(${LOG_LEVEL_PATTERN:-%5p}) [%marker] %clr(${PID:- }){magenta} %clr(---){faint} [trace=%X{X-Trace-Id:-},span=%X{X-Span-Id:-}] %magenta([%t]){faint} %yellow(%-40.40logger{39}){cyan}%clr(:){faint} %m${LOG_EXCEPTION_CONVERSION_WORD:-%throwable} %replace(%msg){'n', ''}%n" />
 

but it did not work as expected

Thanks in advance