Maison >développement back-end >Golang >Comment puis-je personnaliser la connexion dans le package net/http de Go ?

Comment puis-je personnaliser la connexion dans le package net/http de Go ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-28 02:11:11611parcourir

How Can I Customize Logging in Go's net/http Package?

Personnaliser la connexion sur net/http avec un rédacteur personnalisé

Pour enregistrer les erreurs depuis net/http dans un format personnalisé, tirez parti du http.Server.ErrorLog, qui accepte une implémentation du log.Logger

Implémentation d'un enregistreur personnalisé

Pour implémenter votre propre enregistreur, définissez un type qui satisfait à l'interface io.Writer et implémente la méthode Write pour transférer les messages vers votre format de journalisation souhaité. Par exemple :

type AppLogger struct {
    log *zap.SugaredLogger
}

func (l *AppLogger) Write(p []byte) (n int, err error) {
    l.log.Errorw(string(p))
    return len(p), nil
}

Intégration avec net/http

Pour utiliser votre enregistreur personnalisé avec net/http, attribuez une instance de votre type AppLogger au champ ErrorLog de votre http.Serveur :

server := &http.Server{
    Addr:     addr,
    Handler:  handler,
    ErrorLog: logger.New(&AppLogger{logger}, "", 0),
}

Utiliser Zap Logger

Pour intégrer votre enregistreur Zap avec net/http, vous pouvez créer un rédacteur personnalisé qui transmet les messages d'erreur à votre enregistreur Zap :

type fwdToZapWriter struct {
    logger *zap.SugaredLogger
}

func (fw *fwdToZapWriter) Write(p []byte) (n int, err error) {
    fw.logger.Errorw(string(p))
    return len(p), nil
}
Ensuite, attribuez une instance de votre fwdToZapWriter au champ ErrorLog de votre http.Server :

server := &http.Server{
    Addr:     addr,
    Handler:  handler,
    ErrorLog: logger.New(&fwdToZapWriter{logger}, "", 0),
}
En mettant en œuvre ces étapes, vous serez journalisation des erreurs depuis net/http dans le format personnalisé fourni par votre enregistreur AppLogger ou Zap.

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