JSON Logging for Spring Boot Après cela, le contenu mis en œuvre conformément à l'article ci-dessus est publié. L'article ci-dessus contient plus d'informations, donc si vous n'êtes pas à l'aise avec l'anglais, nous vous recommandons de vous y référer.
Ajout de logstash aux dépendances
build.gradle
dependencies {
implementation 'net.logstash.logback:logstash-logback-encoder:6.1'
}
Ajout des paramètres de connexion
src/main/resources/logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property resource="application.yml" />
<contextName>${spring.application.name}</contextName>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
<providers>
<timestamp>
<fieldName>timeStamp</fieldName>
<timeZone>UTC</timeZone>
</timestamp>
<loggerName>
<fieldName>logger</fieldName>
</loggerName>
<logLevel>
<fieldName>level</fieldName>
</logLevel>
<threadName>
<fieldName>thread</fieldName>
</threadName>
<mdc />
<message>
<fieldName>message</fieldName>
</message>
<arguments>
<includeNonStructuredArguments>false</includeNonStructuredArguments>
</arguments>
<stackTrace>
<fieldName>stack</fieldName>
</stackTrace>
</providers>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="CONSOLE" />
</root>
</configuration>
Exemple de sortie du journal INFO dans la classe Controller
TestController.java
package com.exsample.controller;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.MDC;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import static net.logstash.logback.argument.StructuredArguments.v;
@Slf4j
@RestController
@RequestMapping("/test")
public class TestController {
@GetMapping
public void get() {
MDC.put("MDC key","MDC value");
log.info("JSON Log",v("arg key","arg value"));
}
}
Le journal suivant est sorti
{"timeStamp":"2019-08-28T08:52:22.173Z","logger":"com.exsample.controller.TestController","level":"INFO","thread":"main","MDC key":"MDC value","message":"JSON Log","arg key":"arg value"}
<encoder>
de logback-spring.xml
est sorti dans l'ordre du haut.(Extrait) Logback-spring.xml
<providers>
<timestamp>
<fieldName>timeStamp</fieldName>
<timeZone>UTC</timeZone>
</timestamp>
<loggerName>
<fieldName>logger</fieldName>
</loggerName>
<logLevel>
<fieldName>level</fieldName>
</logLevel>
<threadName>
<fieldName>thread</fieldName>
</threadName>
<mdc />
<message>
<fieldName>message</fieldName>
</message>
<arguments>
<includeNonStructuredArguments>false</includeNonStructuredArguments>
</arguments>
<stackTrace>
<fieldName>stack</fieldName>
</stackTrace>
</providers>
Contenu du journal
{
"timeStamp": "2019-08-28T08:52:22.173Z",
"logger": "com.exsample.controller.TestController",
"level": "INFO",
"thread": "main",
"MDC key": "MDC value",
"message": "JSON Log",
"arg key": "arg value"
}
MDC.put ()
est sorti à la position de la balise <mdc />
.(Extrait) TestController.java
MDC.put("MDC key","MDC value");
Extrait de journal
"MDC key": "MDC value"
log.info ()
est sorti à la position de la balise <message>
.(Extrait) TestController.java
log.info("JSON Log",v("arg key","arg value"));
Extrait de journal
"message": "JSON Log"
StructuredArguments.v (clé, valeur)
après le deuxième argument de log.info ()
, le contenu sera affiché à la position de la balise <arguments>
.(Extrait) TestController.java
log.info("JSON Log",v("arg key","arg value"));
Extrait de journal
"arg key": "arg value"
Recommended Posts