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>
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>
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}}"/>
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:
<?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>
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
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"])