Maison  >  Article  >  développement back-end  >  Comment obtenir une journalisation de type MDC dans Golang sans stockage local de thread ?

Comment obtenir une journalisation de type MDC dans Golang sans stockage local de thread ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-27 22:55:01662parcourir

 How to Achieve MDC-like Logging in Golang Without Thread Local Storage?

Apprivoiser la journalisation sans fil : atteindre MDC dans Golang

Réaliser un mécanisme de journalisation similaire au MDC (Mapped Diagnostic Context) en Java n'est pas simple dans Golang. L'absence de stockage local des threads dans Go pose un obstacle important.

Pour contourner cette limitation, l'approche recommandée consiste à transmettre un contexte via la pile de requêtes. Cela devient de plus en plus courant dans les bibliothèques Golang.

Une implémentation typique implique l'utilisation d'un middleware pour ajouter un ID de requête unique au contexte. Voici un exemple :

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

Cet ID de demande peut ensuite être récupéré et utilisé dans tout le code en accédant à ctx.Value("requestId").

Pour personnaliser le processus de journalisation, un Une fonction de journalisation peut être créée :

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

En intégrant diverses méthodes, les développeurs Golang peuvent implémenter un mécanisme de journalisation qui fournit des fonctionnalités similaires à MDC en Java, permettant un suivi efficace des requêtes simultanées via des journaux personnalisés.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn