Heim >Backend-Entwicklung >Golang >Wie kann ich die Fehlerprotokollierung im net/http-Paket von Go anpassen?

Wie kann ich die Fehlerprotokollierung im net/http-Paket von Go anpassen?

Susan Sarandon
Susan SarandonOriginal
2024-11-28 10:48:12699Durchsuche

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

Fehler im benutzerdefinierten Format mit net/http protokollieren

In net/http können Fehler mit Server.ErrorLog protokolliert werden Feld. Um Fehler in einem benutzerdefinierten Format zu protokollieren, können Sie den Standard-Logger durch Ihre eigene Implementierung ersetzen.

Benutzerdefinierte Protokollierungsimplementierung

Um einen benutzerdefinierten Logger zu erstellen, definieren Sie einen Typ, der implementiert die io.Writer-Schnittstelle, wie im folgenden Beispiel zu sehen ist:

type CustomLogger struct {
    writer io.Writer
}

func (l *CustomLogger) Write(p []byte) (n int, err error) {
    // Implement custom logging logic here
}

Verwenden eines benutzerdefinierten Loggers in net/http

Sobald Sie Ihren benutzerdefinierten Logger haben, können Sie ihn als Fehlerprotokoll für den http.Server festlegen:

server := &http.Server{
    Addr:       ":8080",
    Handler:    myHandler,
    ErrorLog: &CustomLogger{writer: os.Stderr},
}

Verwenden Sie Zap Logger für net/ http-Fehlerprotokollierung

Damit Fehler im gleichen Format wie Zap geschrieben werden, müssen Sie einen serverJsonWriter-Typ implementieren leitet die Fehlermeldung an den Zap-Logger weiter. So geht's:

type serverJsonWriter struct {
    fw *fwdToZapWriter
}

func (w serverJsonWriter) Write(p []byte) (n int, err error) {
    w.fw.logger.Errorw(string(p))
    return len(p), nil
}

Wo fwdToZapWriter ist:

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
}

Sie können dann den Typ serverJsonWriter in Ihrem Server verwenden:

server := &http.Server{
    Addr:       ":8080",
    Handler:    myHandler,
    ErrorLog: log.New(&serverJsonWriter{fw: &fwdToZapWriter{logger: myZapLogger}}, "", 0),
}

Durch die Implementierung dieser Schritte, Sie können Netz-/http-Fehler in Ihrem eigenen benutzerdefinierten Format mit Ihrem Zap-Logger protokollieren.

Das obige ist der detaillierte Inhalt vonWie kann ich die Fehlerprotokollierung im net/http-Paket von Go anpassen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn