Wie verwenden von MDC von logback und SLF4J mit spring boot zu erfassen einzigartigen tracking in der POST-Anfrage json?
Benutzen wir:
- Spring Boot
- Slf4J
- Logback
- ELK-stack
Nun wollen wir mit MDC
zum hinzufügen von einzigartigen tracking-Nummer, die in den POST-request JSON, zu jeder log-Anweisung für eine bestimmte Anforderung.
Googelte ich einige blog-Beiträge, diese sind nicht hilfreich für mich viel.
Unten ist die logback.xml
die wir verwenden
<configuration>
<property name="PROJECT_ID" value="template-api"/>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="net.logstash.logback.encoder.LogstashEncoder"/>
</appender>
<root level="INFO">
<appender-ref ref="STDOUT" />
</root>
</configuration>
Kann mir jemand einige Hilfestellungen, wie du das gemacht bitte?
InformationsquelleAutor Bravo | 2017-10-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie Logback ist Abgebildet Diagnotic Kontext zu verbreiten, einer einzigartigen tracking-Nummer zu jeder log-Meldung.
Besteht aus zwei teilen:
Drücken Sie Ihre einzigartige tracking-Nummer in MDC z.B.
MDC.put("uniqueTrackingNumber", the_unique_tracking_number);
Gehören die MDC-Eintrag in der log-Anweisungen. Sie tun dies durch die Angabe in der log-Muster. Also, wenn Sie speichern Sie die einzigartigen tracking-Nummer in einem MDC-Eintrag mit dem Namen
uniqueTrackingNumber
dann Sie würde es in Ihrem emittiert log-Ereignisse definieren ein layout wie diese:Mehr details in den docs.
Ich vermute, dass der Anwendungsbereich des "einzigartigen tracking-Nummer" ist begrenzt auf eine Anforderung (oder eine einzelne 'flow' durch Ihre Anwendung)? Wenn dem so ist, dann werden Sie wollen, um zu erkennen, dass einige drosselstelle, wo Sie können schieben Sie den MDC-Wert auf dem Weg in. In der Spring-Boot-Welt, dies ist wahrscheinlich eine
Filter
. So etwas vielleicht:Alternativ könnte man erweitern Logback ist
MDCInsertingServletFilter
zu extrahieren, was Sie wollen Wunsch, und schieben Sie es in die MDC.Ja, haben Sie einen Blick auf die finally-block in
MDCInsertingServletFilter.doFilter()
für ein Beispiel.InformationsquelleAutor glytching