Golang benutzerdefinierte ServeHTTP-Statusprotokollierung

WBOY
Freigeben: 2024-02-11 12:54:08
nach vorne
1234 Leute haben es durchsucht

Golang 自定义 ServeHTTP 状态日志记录

php-Editor Banana stellt Ihnen Golangs benutzerdefinierte ServeHTTP-Statusprotokollierung vor. In Golang ist die ServeHTTP-Funktion eine der Schlüsselfunktionen zur Verarbeitung von HTTP-Anfragen. Durch Anpassen der ServeHTTP-Funktion können wir die Statusinformationen jeder Anfrage aufzeichnen und verfolgen, um unsere Anwendung besser zu verstehen und zu debuggen. In diesem Artikel wird detailliert beschrieben, wie Sie die ServeHTTP-Funktion in Golang anpassen und die Statusprotokollierungsfunktion implementieren, um unsere Entwicklungseffizienz und Anwendungsstabilität zu verbessern. Egal, ob Sie Anfänger oder erfahrener Entwickler sind, dieser Artikel hilft Ihnen, die ServeHTTP-Funktion von Golang besser zu verstehen und anzuwenden.

Frageninhalt

Ich baue mein eigenes Web-Framework und stoße auf ein Problem. Wenn ich versuche, eine Anfrage mit einem Antwortstatuscode zu protokollieren, erhalte ich die Fehlermeldung: Ungültige Speicheradresse oder Null-Zeiger-Dereferenzierung p>

My ServeHTTP-Funktion:

func (r *Router) ServeHTTP(w http.ResponseWriter, req *http.Request) {

    handler := r.getHandler(req.Method, req.URL.Path)
    if handler == nil {
        notFoundHandler(w, req)
        return
    }
    done := make(chan struct{})

    reqStruct := newReqStruct(w, req)

    go func() {
        handler(reqStruct)
        done <- struct{}{}
        close(done)
    }()
    <-done
    logger.logRequest(req.URL.Path, req.Method, req.Response.StatusCode)
Nach dem Login kopieren

}

Lösung

Diese Zeile:

logger.logRequest(req.URL.Path, req.Method, req.Response.StatusCode)
Nach dem Login kopieren

req.Response Wird nur für HTTP-Weiterleitungen ausgefüllt. In diesem Fall wird es Null sein.

Wenn Sie den Antwortcode erfassen möchten, schreiben Sie einen Wrapper-Antwortschreiber und implementieren Sie WriteHeader, um den Antwortcode zu erfassen.

Das obige ist der detaillierte Inhalt vonGolang benutzerdefinierte ServeHTTP-Statusprotokollierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:stackoverflow.com
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!