„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie können Sie die MDC-Protokollierung in GoLang implementieren?

Wie können Sie die MDC-Protokollierung in GoLang implementieren?

Veröffentlicht am 23.12.2024
Durchsuche:216

How can you implement MDC logging in GoLang?

MDC-Protokollierung in GoLang

Die MDC-Protokollierung von Java basiert auf lokalem Thread-Speicher, der in GoLang nicht verfügbar ist. Eine ähnliche Funktionalität kann jedoch erreicht werden, indem ein Kontext durch den Stapel geleitet wird.

Java MDC basiert auf lokalem Thread-Speicher, etwas, das Go nicht hat. Am nächsten kommt es Ihnen, einen Kontext durch Ihren Stapel zu fädeln, was in Go-Bibliotheken mittlerweile gängige Praxis ist.

Eine Möglichkeit, dies zu implementieren, ist ein Middleware-Paket, das dem Kontext einer Webanforderung eine Anforderungs-ID hinzufügt . Diese ID kann dann abgerufen und im gesamten Stapel zu Protokollierungszwecken verwendet werden.

Hier ist ein einfaches Beispiel für ein Middleware-Paket:

req = req.WithContext(context.WithValue(req.Context(), "requestId", ID))

Die Anfrage-ID kann dann abgerufen werden using:

ctx.Value("requestId")

Dieser Wert kann in einer benutzerdefinierten Logger-Funktion verwendet werden:

func logStuff(ctx context.Context, msg string) {
    log.Println(ctx.Value("requestId"), msg) // call stdlib logger
}

Dieser Ansatz ermöglicht eine einfache Nachverfolgung gleichzeitiger Anfragen durch das Hinzufügen eindeutiger IDs zu allen Serverprotokollen. Es gibt andere mögliche Implementierungen, aber diese bietet eine einfache Möglichkeit, eine MDC-ähnliche Protokollierung in GoLang zu erreichen.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3