Spring Шаблон регистрации загрузки

У меня возникла проблема с конфигурацией в Logback в приложении Spring Boot. Я хочу, чтобы мой consoleAppender выглядел как загрузочный консоль загрузки Spring. Как наследовать шаблон из Spring Загрузочный консольный appender?

Ниже моя конфигурация consoleAppender

<appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">
    <layout class="ch.qos.logback.classic.PatternLayout">
        <Pattern class="org.">
            %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
        </Pattern>
    </layout>
</appender>

Ответ 1

После того, как вы включили конфигурацию по умолчанию, вы можете использовать ее значения в своей собственной конфигурации logback-spring.xml:

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true">
    <!-- use Spring default values -->
    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>

    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
            <charset>utf8</charset>
        </encoder>
    </appender>
    …
</configuration>

Ответ 2

Вы можете найти Spring шаблон ведения журнала загрузки журнала загрузки в файле defaults.xml:

spring -boot-1.5.0.RELEASE.jar/орг/springframework/загрузки/регистрация/Logback/DEFAULTS.XML

Консольный шаблон:

<property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>

Ответ 3

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

    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
    <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
    <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>
                %clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n%wEx
            </Pattern>
        </layout>
    </appender>

    <root level="info">
        <appender-ref ref="STDOUT" />
    </root>

</configuration>

Ответ 4

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

В итоге я использовал отладчик и посмотрел на прилагаемые к регистратору приложения по умолчанию.

Я нашел, что этот шаблон работает по своему желанию:

<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %5p 18737 --- [%t] %-40.40logger{39} : %m%n%wEx</pattern>

EDIT: шаблон не совсем корректный, я видел, что эта среда выполнения уже была создана (в этом случае 18737 ---) я рассмотрю правильную переменную, чтобы заменить ее. Он содержит формат столбцов с фиксированной длиной, хотя

EDIT 2: Хорошо, я еще раз взглянул на содержимое отладчика. Это вы также можете сделать сами, посмотрев содержимое экземпляра журнала: Отладчик (затмение) Содержание журнала

Итак, я использовал шаблон, используемый в консолиAppender:

%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr(18971){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n%wEx

Как можно видеть здесь:

Отладчик: подробное содержимое шаблона кодировщика

Ответ 5

Шаблон журнала может быть настроен с помощью файла application.properties

Пример:

# Logging pattern for the console
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} - %msg%n

Ответ 6

Для тех, кто хотел бы использовать ответ Лукаша Франковского (который выглядит здесь как самое чистое решение), но в отличной версии "проблемная" часть {$PID:- } может быть расширена следующим образом:

Logback-spring.groovy

import ch.qos.logback.classic.PatternLayout
import ch.qos.logback.core.ConsoleAppender
import org.springframework.boot.logging.logback.ColorConverter
import org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter
import org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter

import static ch.qos.logback.classic.Level.INFO

conversionRule("clr", ColorConverter)
conversionRule("wex", WhitespaceThrowableProxyConverter)
conversionRule("wEx", ExtendedWhitespaceThrowableProxyConverter)

appender("STDOUT", ConsoleAppender) {
    layout(PatternLayout) {
        def PID = System.getProperty("PID") ?: ''
        pattern = "%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr(${PID}){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n%wEx"
    }

}
root(INFO, ["STDOUT"])

Ответ 7

Вы можете использовать ниже шаблон:

%d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${sys:PID} --- [%15.15t] %-40.40logger{1.} : %m%n%wEx

Ответ 8

Помните, что, по крайней мере, при весенней загрузке 1.4.3, если вы хотите настроить свойства, импортированные из defaults.xml, настройку следует поместить ДО включения.

Например, это настраивает приоритет шириной 100 символов:

<configuration scan="true">
    <property name="LOG_LEVEL_PATTERN" value="%100p" />

    <!-- use Spring default values -->
    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>

    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
        </layout>
    </appender>

    <logger name="hu" level="debug" additivity="false">
        <appender-ref ref="CONSOLE" />
    </logger>

    <root level="warn">
        <appender-ref ref="CONSOLE" />
    </root>

</configuration>

Но это НЕ

<configuration scan="true">
    <!-- use Spring default values -->
    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
    <property name="LOG_LEVEL_PATTERN" value="%100p" />

    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
        </layout>
    </appender>

    <logger name="hu" level="debug" additivity="false">
        <appender-ref ref="CONSOLE" />
    </logger>

    <root level="warn">
        <appender-ref ref="CONSOLE" />
    </root>

</configuration>

Ответ 9

<configuration>
    <!-- log to console -->
    <appender name="STDOUT"
        class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <!-- pattern -->
            <pattern>
                %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
            </pattern>
        </encoder>
    </appender>

    <!-- error -->
    <appender name="errorAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">  
        <file>logs/error-today.log</file>
        <!-- day -->  
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  
            <fileNamePattern>logs/error/error-%d{yyyy-MM-dd}.log.gz</fileNamePattern>  
        </rollingPolicy>  
        <encoder>  
            <pattern>%d{HH:mm:ss.SSS} %-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>  
        </encoder>
        <!-- error filter -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>  
            <onMatch>ACCEPT</onMatch>  
            <onMismatch>DENY</onMismatch>
        </filter>  
    </appender> 

    <!-- warn -->
    <appender name="warnAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">  
        <file>logs/warn-today.log</file>

        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  
            <fileNamePattern>logs/warn/warn-%d{yyyy-MM-dd}.log.gz</fileNamePattern>  
        </rollingPolicy>  
        <encoder>  
            <pattern>%d{HH:mm:ss.SSS} %-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>  
        </encoder>

        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>WARN</level>  
            <onMatch>ACCEPT</onMatch>  
            <onMismatch>DENY</onMismatch>
        </filter>  
    </appender> 

    <appender name="infoAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">  
        <file>logs/info-today.log</file>  
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  
            <fileNamePattern>logs/info/info-%d{yyyy-MM-dd}.log.gz</fileNamePattern>  
        </rollingPolicy>  
        <encoder>  
            <pattern>%d{HH:mm:ss.SSS} %-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>  
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>  
            <onMatch>ACCEPT</onMatch>  
            <onMismatch>DENY</onMismatch>
        </filter>  
    </appender>


    <root level="INFO">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="errorAppender" />
        <appender-ref ref="warnAppender" />
        <appender-ref ref="infoAppender" />
    </root>
</configuration>