Heim  >  Artikel  >  Backend-Entwicklung  >  Wie erfasst und protokolliert man den Antworttext in Gin Middleware?

Wie erfasst und protokolliert man den Antworttext in Gin Middleware?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-12 01:44:01189Durchsuche

How to Capture and Log Response Body in Gin Middleware?

Antworttext in Gin-Middleware protokollieren

In Middleware müssen Sie möglicherweise den Antworttext zu Debug- oder Prüfzwecken erfassen und protokollieren. Wie können wir also über den Middleware-Kontext in Gin auf den Antworttext zugreifen?

Gin verwaltet das Schreiben der Antworten intern, was es schwierig macht, den Text direkt abzurufen. Um dies zu überwinden, müssen wir unseren eigenen Writer implementieren, der die Schreibvorgänge abfängt. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. Erstellen Sie einen benutzerdefinierten Writer:
type bodyLogWriter struct {
    gin.ResponseWriter
    body *bytes.Buffer
}

func (w bodyLogWriter) Write(b []byte) (int, error) {
    w.body.Write(b)
    return w.ResponseWriter.Write(b)
}

Dieser Writer puffert den Antworttext beim Schreiben an den ursprünglichen Autor.

  1. Implementieren Sie a Middleware:
func ginBodyLogMiddleware(c *gin.Context) {
    blw := &bodyLogWriter{body: bytes.NewBufferString(""), ResponseWriter: c.Writer}
    c.Writer = blw
    c.Next()

     statusCode := c.Writer.Status()
    if statusCode >= 400 {
        fmt.Println("Response body: " + blw.body.String())
    }
}

In der Middleware weisen wir unseren benutzerdefinierten Writer blw dem Kontext zu und stellen so sicher, dass alle Antworten von ihm erfasst werden. Dann protokollieren wir den Text, wenn der Statuscode ein Fehler ist.

  1. Verwenden Sie die Middleware:
router.Use(ginBodyLogMiddleware)

Jetzt, wenn Anfragen vorliegen Von Ihrem Gin-Router verarbeitet, fängt die Middleware die Antworttexte für Anfragen mit Fehlerstatuscodes ab und protokolliert sie.

Beachten Sie, dass dieser Ansatz Protokolliert keine Antworttexte für statische Dateien, sollte aber den Anwendungsfall für die meisten dynamischen Inhalte abdecken. Wenn Sie alle Dateien abfangen müssen, benötigen Sie einen komplexeren Wrapper um die Gin-Engine.

Das obige ist der detaillierte Inhalt vonWie erfasst und protokolliert man den Antworttext in Gin Middleware?. 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