Maison > développement back-end > Golang > Comment pouvez-vous implémenter la journalisation MDC dans GoLang ?

Comment pouvez-vous implémenter la journalisation MDC dans GoLang ?

Patricia Arquette
Libérer: 2024-10-27 21:00:30
original
929 Les gens l'ont consulté

How can you implement MDC logging in GoLang?

Journalisation MDC dans GoLang

La journalisation MDC de Java repose sur le stockage local des threads, qui n'est pas disponible dans GoLang. Cependant, une fonctionnalité similaire peut être obtenue en envoyant un contexte dans la pile.

Java MDC s'appuie sur le stockage local des threads, ce que Go n'a pas. La chose la plus proche est d'enfiler un contexte dans votre pile, ce qui devient une pratique courante dans les bibliothèques Go.

Une façon d'implémenter cela consiste à utiliser un package middleware qui ajoute un ID de requête au contexte d'une requête Web. . Cet identifiant peut ensuite être récupéré et utilisé dans toute la pile à des fins de journalisation.

Voici un exemple simple de package middleware :

req = req.WithContext(context.WithValue(req.Context(), "requestId", ID))
Copier après la connexion

L'ID de requête peut ensuite être récupéré en utilisant :

ctx.Value("requestId")
Copier après la connexion

Cette valeur peut être utilisée dans une fonction de journalisation personnalisée :

func logStuff(ctx context.Context, msg string) {
    log.Println(ctx.Value("requestId"), msg) // call stdlib logger
}
Copier après la connexion

Cette approche permet de tracer facilement les requêtes simultanées en ajoutant des identifiants uniques à tous les journaux du serveur. Il existe d'autres implémentations possibles, mais celle-ci fournit un moyen simple d'obtenir une journalisation de type MDC dans GoLang.

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