MDC-Protokollierung in GoLang erreichen
Die Protokollierung mit Mapped Diagnostic Context (MDC) in Java ermöglicht die Verfolgung gleichzeitiger Anforderungen durch Hinzufügen von UUIDs zu Serverprotokollen . In Go ist der lokale Thread-Speicher, auf den MDC in Java angewiesen ist, nicht verfügbar.
GoLangs Lösung: Threading-Kontext
Um die MDC-ähnliche Protokollierung in Go zu ermöglichen, ist dies der Fall erforderlich, um einen Kontext im gesamten Anwendungsstapel einzufädeln. Dieser Ansatz erfreut sich bei Go-Bibliotheken zunehmender Beliebtheit.
Eine gängige Implementierung umfasst die Verwendung eines Middleware-Pakets, um dem Kontext einer Webanforderung eine Anforderungs-ID hinzuzufügen. Dadurch können Sie die ID mit ctx.Value("requestId") abrufen und für die Protokollierung verwenden.
Sie können beispielsweise eine benutzerdefinierte Loggerfunktion erstellen:
<code class="go">func logStuff(ctx context.Context, msg string) { log.Println(ctx.Value("requestId"), msg) // Call the standard library logger }</code>
Dieser Ansatz bietet Flexibilität und ermöglicht Ihnen die Bearbeitung von Anforderungs-IDs nach Bedarf. Obwohl es kein direktes Äquivalent zu Javas MDC ist, bietet es eine praktikable Lösung für die Verfolgung gleichzeitiger Anfragen in Go.
Das obige ist der detaillierte Inhalt vonWie erreicht man eine MDC-ähnliche Protokollierung in GoLang?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!