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