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 à travers 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 ID 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 la demande peut ensuite être récupéré using :
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 ID 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.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3