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

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

Patricia Arquette
Patricia Arquetteoriginal
2024-10-27 21:00:30800parcourir

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))

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

ctx.Value("requestId")

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
}

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!

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