web-dev-qa-db-ja.com

Spring Bootのロギングパターン

Spring BootアプリケーションのLogbackの設定に問題があります。 consoleAppenderをデフォルトのSpring Bootコンソールアペンダーのように見せたい。 Spring Bootのデフォルトコンソールアペンダーからパターンを継承する方法は?

以下は私の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>
30
Kacper

デフォルト構成を含めたら、その値を独自の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>
44
Michael Piefel

Defaults.xmlファイルでSpring Bootログバックコンソールロギングパターンを見つけることができます。

spring-boot-1.5.0.RELEASE.jar/org/springframework/boot/logging/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}}"/>
29
Lapaczo
<?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>
9

この質問が出されてからしばらく経ちましたが、最近自分で問題を抱えていて答えが見つからなかったので、少し掘り下げて解決策を見つけました。

最終的にデバッガーを使用して、ロガーに接続されているデフォルトのアペンダーを確認しました。

私はこのパターンが私にとって望ましいように機能していることを発見しました:

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

編集:パターンは完全に正しいわけではありません。ランタイムの一部の値はすでにインスタンス化されていることがわかりました(この場合は18737 ---)。ただし、固定長列の形式は含まれています

編集2:OK、私はデバッガの内容をもう一度見てみました。これは、ロガーインスタンスの内容を確認することでも実行できます。 Debugger(Eclipse)Logger Contents

そのため、consoleAppenderで使用されているパターンを使用することになりました。

%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

ここに見られるように:

デバッガ:エンコーダパターンの詳細な内容

7
Edvaaart

ロギングパターンはapplication.propertiesファイルを使用して構成できます

例:

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

ŁukaszFrankowskiの回答(ここでは最もクリーンなソリューションのように見えます)を使用したいが、グルーヴィーなバージョンでは、「問題のある」{$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"])
0
Solar Fiber

インポートされたプロパティをカスタマイズすることもできます。

ただし、少なくともdefaults.xmlからインポートされたプロパティをカスタマイズする場合は、スプリングブート1.4.3では、インクルードの前にカスタマイズを配置する必要があることに注意してください。

たとえば、これは優先度を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>
0
riskop

以下のパターンを使用できます:

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