[JAVA] Sortie du journal Spring Boot au format json

référence

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.

Environnement d'exécution

Préparation

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>

la mise en oeuvre

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"));
    }
}

résultat

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"}

Supplément

(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"
}

(Extrait) TestController.java


MDC.put("MDC key","MDC value");

Extrait de journal


"MDC key": "MDC value"

(Extrait) TestController.java


log.info("JSON Log",v("arg key","arg value"));

Extrait de journal


"message": "JSON Log"

(Extrait) TestController.java


log.info("JSON Log",v("arg key","arg value"));

Extrait de journal


"arg key": "arg value"

Recommended Posts

Sortie du journal Spring Boot au format json
Sortie des journaux de demande et de réponse avec Spring Boot
Journaliser la sortie au format Json en utilisant lograge / lograge-sql avec RubyOnRails
Bean de sortie au format JSON au printemps
Format de la sortie du journal par Tomcat lui-même dans Tomcat 8
Définir le paramètre contextuel dans Spring Boot
Multi-projets Spring Boot 2 avec Gradle
Changements majeurs dans Spring Boot 1.5
NoHttpResponseException dans Spring Boot + WireMock
Sortez le journal d'accès Tomcat intégré à la sortie standard avec Spring Boot
Authentifiez 3 paramètres ou plus au format JSON à l'aide de Spring Security
Spring Boot Hello World dans Eclipse
Écrire du code de test avec Spring Boot
Enregistrer la sortie dans un fichier en Java
Implémenter l'API REST avec Spring Boot
Qu'est-ce que @Autowired dans Spring Boot?
Implémenter l'application Spring Boot dans Gradle
Sortie du journal Spring Data JPA SQL
Comment utiliser Thymeleaf avec Spring Boot
Journal système de sortie par la technologie Spring AOP
Lancer un (ancien) projet Spring Boot avec IntelliJ
Créer une image Spring Boot + Docker avec Gradle
Priorité d'accès aux fichiers statiques dans Spring Boot
Mémorandum de téléchargement de fichier local avec Spring Boot
Essayez d'utiliser l'API au format JSON en Java
Créer un projet Java Spring Boot avec IntelliJ
Desserrer la vérification de la syntaxe de Thymeleaf dans Spring Boot
Date de sortie en Java au format étendu ISO 8601
[Entraine toi! ] Affichez Hello World avec Spring Boot
Utiliser la méthode de requête DynamoDB avec Spring Boot
DI SessionScope Bean dans le filtre Spring Boot 2
Modifier le délai d'expiration de la session dans Spring Boot
Cookie SameSite dans Spring Boot (Spring Web MVC + Tomcat)
Page d'erreur Spring Boot Whitelabel et réponse JSON
Testez le contrôleur avec Mock MVC dans Spring Boot
Traitement asynchrone avec exécution régulière dans Spring Boot
Exécuter un projet Spring Boot avec VS Code
Préparez la sortie du journal à l'aide de log4j dans Eclipse.
Défi Spring Boot
Utiliser le filtre de servlet avec Spring Boot [compatible Spring Boot 1.x, 2.x]
Comment ajouter un chemin de classe dans Spring Boot
Demander un exemple de sortie du journal des paramètres Java et Spring MVC
Conseils Java - Créez un projet Spring Boot avec Gradle
Forme de botte de printemps
Comment se lier avec un fichier de propriétés dans Spring Boot
Spring Boot Rappelez-vous
gae + botte à ressort
Annotations utilisées dans les outils de gestion des tâches Spring Boot
Afficher la tâche Gradle dans le projet Spring Boot
Spécifiez le codage des ressources statiques dans Spring Boot
Inclure le pot externe dans le package avec Spring boot2 + Maven3
Exécution asynchrone des requêtes examinée dans Spring Boot 1.5.9
Comment créer un projet Spring Boot dans IntelliJ
SSO avec GitHub OAuth dans l'environnement Spring Boot 1.5.x
Comment utiliser CommandLineRunner dans Spring Batch of Spring Boot
Testez la classe injectée sur le terrain dans le test de démarrage Spring sans utiliser le conteneur Spring
Jusqu'à ce que vous commenciez à développer avec Spring Boot dans eclipse 1
Essayez gRPC dans le projet Spring Boot et Spring Cloud (Mac OS)
Présentez swagger-ui à l'API REST implémentée dans Spring Boot
Jusqu'à ce que vous commenciez à développer avec Spring Boot dans eclipse 2