[JAVA] Spring Boot-Protokoll im JSON-Format ausgeben

Referenz

JSON Logging for Spring Boot Danach werden die gemäß dem obigen Artikel implementierten Inhalte veröffentlicht. Der obige Artikel enthält weitere Informationen. Wenn Sie mit Englisch nicht vertraut sind, empfehlen wir Ihnen, darauf zu verweisen.

Ausführungsumgebung

Vorbereitung

Logstash zu Abhängigkeiten hinzugefügt

build.gradle


dependencies {
	implementation 'net.logstash.logback:logstash-logback-encoder:6.1'
}

Logback-Einstellungen hinzugefügt

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>

Implementierung

Beispiel für die Ausgabe des INFO-Protokolls in der Controller-Klasse

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

Ergebnis

Das folgende Protokoll wird ausgegeben

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

Ergänzung

(Auszug) 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>

Protokollinhalt


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

(Auszug) TestController.java


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

Protokollauszug


"MDC key": "MDC value"

(Auszug) TestController.java


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

Protokollauszug


"message": "JSON Log"

(Auszug) TestController.java


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

Protokollauszug


"arg key": "arg value"

Recommended Posts

Spring Boot-Protokoll im JSON-Format ausgeben
Anforderungs- und Antwortprotokolle mit Spring Boot ausgeben
Protokollausgabe im Json-Format mit lograge / lograge-sql mit RubyOnRails
Ausgabe Bean als JSON im Frühjahr
Format der Protokollausgabe von Tomcat selbst in Tomcat 8
Legen Sie den Kontextparameter in Spring Boot fest
Spring Boot 2 Multiprojekt mit Gradle
Wichtige Änderungen in Spring Boot 1.5
NoHttpResponseException in Spring Boot + WireMock
Geben Sie das integrierte Tomcat-Zugriffsprotokoll mit Spring Boot an die Standardausgabe aus
Authentifizieren Sie 3 oder mehr Parameter im JSON-Format mit Spring Security
Frühlingsstiefel Hallo Welt in Eclipse
Schreiben Sie den Testcode mit Spring Boot
Protokollausgabe in Datei in Java
Implementieren Sie die REST-API mit Spring Boot
Was ist @Autowired im Spring Boot?
Implementieren Sie die Spring Boot-Anwendung in Gradle
Spring Data JPA SQL-Protokollausgabe
Verwendung von Thymeleaf mit Spring Boot
Ausgabesystemprotokoll mit Spring AOP-Technologie
Starten Sie mit IntelliJ ein (altes) Spring Boot-Projekt
Erstellen Sie mit Gradle ein Spring Boot + Docker-Image
Statische Dateizugriffspriorität beim Spring Boot
Memorandum zum Herunterladen lokaler Dateien mit Spring Boot
Versuchen Sie es mit der JSON-Format-API in Java
Erstellen Sie mit IntelliJ ein Java Spring Boot-Projekt
Lösen Sie die Thymeleaf-Syntaxprüfung in Spring Boot
Ausgabedatum in Java im erweiterten ISO 8601-Format
[Trainieren! ] Zeigen Sie Hello World mit Spring Boot an
Verwenden Sie die DynamoDB-Abfragemethode mit Spring Boot
DI SessionScope Bean im Spring Boot 2-Filter
Ändern Sie das Sitzungszeitlimit in Spring Boot
SameSite-Cookie im Spring Boot (Spring Web MVC + Tomcat)
Spring Boot Whitelabel-Fehlerseite und JSON-Antwort
Testen Sie den Controller mit Mock MVC im Spring Boot
Asynchrone Verarbeitung mit regelmäßiger Ausführung in Spring Boot
Führen Sie ein Spring Boot-Projekt mit VS-Code aus
Bereiten Sie die Protokollausgabe mit log4j in Eclipse vor.
Fordern Sie Spring Boot heraus
Servlet-Filter mit Spring Boot verwenden [Spring Boot 1.x, 2.x kompatibel]
So fügen Sie in Spring Boot einen Klassenpfad hinzu
Beispiel für die Ausgabe eines Parameterprotokollprotokolls Java & Spring MVC
Java-Tipps - Erstellen Sie mit Gradle ein Spring Boot-Projekt
Spring Boot Form
So binden Sie mit einer Eigenschaftendatei in Spring Boot
Spring Boot Denken Sie daran
gae + frühlingsstiefel
Anmerkungen, die in Spring Boot-Aufgabenverwaltungstools verwendet werden
Zeigen Sie die Gradle-Aufgabe im Spring Boot-Projekt an
Geben Sie die statische Ressourcencodierung in Spring Boot an
Nehmen Sie das externe Glas mit Spring boot2 + Maven3 in das Paket auf
Untersuchte asynchrone Ausführung von Abfragen in Spring Boot 1.5.9
So erstellen Sie ein Spring Boot-Projekt in IntelliJ
SSO mit GitHub OAuth in der Spring Boot 1.5.x-Umgebung
Verwendung von CommandLineRunner im Spring Batch von Spring Boot
Testen Sie die Klasse mit Feldinjektion im Spring-Boot-Test, ohne den Spring-Container zu verwenden
Bis Sie mit der Entwicklung mit Spring Boot in Eclipse 1 beginnen
Probieren Sie gRPC im Spring Boot & Spring Cloud-Projekt (Mac OS) aus.
Führen Sie swagger-ui in die in Spring Boot implementierte REST-API ein
Bis Sie mit der Entwicklung mit Spring Boot in Eclipse 2 beginnen