Maison > développement back-end > Golang > 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
Libérer: 2024-10-27 22:55:01
original
777 Les gens l'ont consulté

 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))
Copier après la connexion

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
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal