web-dev-qa-db-fra.com

Modèle de journalisation d'amorçage Spring

J'ai un problème avec la configuration sur Logback dans une application Spring Boot. Je veux que ma consoleAppender ressemble à l'appender par défaut de la console Spring Boot. Comment hériter d'un motif de l'appender de la console par défaut Spring Boot?

Ci-dessous ma configuration 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>
22
Kacper

Une fois que vous avez inclus la configuration par défaut, vous pouvez utiliser ses valeurs dans votre propre configuration 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>
27
Michael Piefel

Vous pouvez trouver le modèle de journalisation de la console de rappel Spring Boot dans le fichier defaults.xml: 

spring-boot-1.5.0.RELEASE.jar/org/springframework/boot/logging/logback/defaults.xml

Modèle de console:

<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}}"/>
27
Lapacho

Cela fait longtemps que cette question n'a pas été posée, mais comme je suis moi-même confronté au problème récemment et que je n'ai pas trouvé de réponse, j'ai commencé à creuser un peu plus profondément et j'ai trouvé une solution qui me convenait parfaitement.

J'ai fini par utiliser le débogueur et jeter un coup d'œil sur les ajouts par défaut attachés à l'enregistreur.

J'ai trouvé ce modèle fonctionner comme souhaité pour moi:

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

EDIT: Le modèle n’est pas tout à fait correct, j’ai vu que certaines valeurs avaient déjà été instanciées au moment de l’exécution (dans ce cas, 18737 ---), j’examinerai la bonne variable à remplacer par celle-ci. Il contient le format des colonnes de longueur fixe, bien que

EDIT 2: Ok, j’ai jeté un nouveau coup d’œil au contenu du débogueur. Vous pouvez également le faire vous-même en consultant le contenu d'une instance de consignateur: Debugger (Eclipse) Logger Contents

J'ai donc fini par utiliser le modèle utilisé dans 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

Comme on peut le voir ici:

Debugger: contenu détaillé du motif de l'encodeur

6
Edvaaart
<?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>
6
Łukasz Frankowski

Le modèle de journalisation peut être configuré à l'aide du fichier application.properties

Exemple :

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

Pour ceux qui voudraient utiliser la réponse de Łukasz Frankowski (qui ressemble à la solution la plus propre ici), mais dans une version groovy, la partie "problématique" {$PID:- } peut être développée comme suit:

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