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!