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)
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
Registrieren Sie die Middleware in Ihrem Gin-Router:
router.Use(gin_body_log_middleware)
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!