Heim > Backend-Entwicklung > Golang > Wie protokolliere ich den Antworttext in Gin Middleware?

Wie protokolliere ich den Antworttext in Gin Middleware?

Susan Sarandon
Freigeben: 2024-11-09 09:14:02
Original
202 Leute haben es durchsucht

How to Log Response Body in Gin Middleware?

Antworttext in Gin-Middleware protokollieren

In Gin erfordert die Protokollierung des Antworttexts in einer Middleware das Abfangen und Speichern der Antwort, bevor sie geschrieben wird . So erreichen Sie dies:

Erstellen Sie einen benutzerdefinierten Writer, der Write()-Aufrufe abfängt und den Text speichert:

import bytes

class bodyLogWriter(gin.ResponseWriter):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.body = bytes.Buffer()

    def Write(self, data):
        self.body.write(data)
        return super().Write(data)
Nach dem Login kopieren

Implementieren Sie eine Middleware-Funktion, die den benutzerdefinierten Writer verwendet, um die Antwort abzufangen:

from functools import wraps

def gin_body_log_middleware(func):
    @wraps(func)
    def inner(context, *args, **kwargs):
        context.writer = bodyLogWriter(context.writer)
        wrapped_func(context, *args, **kwargs)
        
        status_code = context.writer.status_code
        if status_code >= 400:
            # Access the logged response body
            print("Response body:", context.writer.body.getvalue().decode())

    return inner
Nach dem Login kopieren

Registrieren Sie die Middleware in Ihrem Gin-Router:

router.Use(gin_body_log_middleware)
Nach dem Login kopieren

Diese Middleware fängt alle Antworten ab und protokolliert den Text für Anfragen mit einem Statuscode von 400 oder höher. Für statische Dateianforderungen ist ein ausgefeilterer Wrapper erforderlich, der die Gin-Engine umhüllt.

Das obige ist der detaillierte Inhalt vonWie protokolliere ich den Antworttext in Gin Middleware?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage