Journalisation personnalisée pour net/http avec Zap
La journalisation des erreurs depuis net/http dans un format personnalisé nécessite la mise en œuvre de votre propre mécanisme de journalisation. Le package net/http fournit une structure de serveur qui inclut un champ ErrorLog, vous permettant de spécifier un enregistreur personnalisé.
Implémentation d'un enregistreur personnalisé
Pour remplacer l'enregistreur par défaut , créez une implémentation personnalisée :
type AppLogger struct { log *zap.SugaredLogger } func (l *AppLogger) Error(message string, keyAndValues ...interface{}) { l.log.Errorw(message, keyAndValues...) }
Intégration avec net/http
Créez un type qui implémente io.Writer et délègue à votre enregistreur personnalisé :
type serverJsonWriter struct { *zap.Logger } func (w serverJsonWriter) Write(p []byte) (n int, err error) { w.Error(string(p)) return len(p), nil }
Enfin, instanciez un nouveau http.Server et définissez le champ ErrorLog sur votre rédacteur personnalisé :
server := &http.Server{ Addr: addr, Handler: handler, ErrorLog: logger.New(&serverJsonWriter{l}, "", 0), }
où l est votre enregistreur de zap instance.
Récupération du zap io.Writer
Vous pouvez récupérer le zap io.Writer en appelant logger.Writer() sur l'instance du logger :
zapWriter := logger.Writer()
Supplémentaire Notes
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!