Heim > Artikel > Backend-Entwicklung > Wie kann ich die Protokollierung im net/http-Paket von Go anpassen?
Passen Sie die Anmeldung bei net/http mit einem benutzerdefinierten Writer an
Um Fehler von net/http in einem benutzerdefinierten Format zu protokollieren, nutzen Sie das http.Server.ErrorLog-Feld, das eine Implementierung des log.Logger akzeptiert Schnittstelle.
Implementieren eines benutzerdefinierten Loggers
Um Ihren eigenen Logger zu implementieren, definieren Sie einen Typ, der die io.Writer-Schnittstelle erfüllt und die Write-Methode implementiert, um Nachrichten an Ihre weiterzuleiten gewünschtes Protokollierungsformat. Zum Beispiel:
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 }
Integration mit net/http
Um Ihren benutzerdefinierten Logger mit net/http zu verwenden, weisen Sie dem Feld ErrorLog eine Instanz Ihres AppLogger-Typs zu Ihres http.Servers:
server := &http.Server{ Addr: addr, Handler: handler, ErrorLog: logger.New(&AppLogger{logger}, "", 0), }
Mit Zap Logger
Um Ihren Zap-Logger mit net/http zu integrieren, können Sie einen benutzerdefinierten Writer erstellen, der Fehlermeldungen an Ihren Zap-Logger weiterleitet:
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 }
Weisen Sie dann eine Instanz von zu Ihren fwdToZapWriter in das ErrorLog-Feld Ihres http.Servers:
server := &http.Server{ Addr: addr, Handler: handler, ErrorLog: logger.New(&fwdToZapWriter{logger}, "", 0), }
Durch die Implementierung dieser Schritte protokollieren Sie Fehler von net/http im benutzerdefinierten Format, das von Ihrem AppLogger oder Zap-Logger bereitgestellt wird.
Das obige ist der detaillierte Inhalt vonWie kann ich die Protokollierung im net/http-Paket von Go anpassen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!