Gin ミドルウェアでの応答本文のログ記録
Gin では、応答本文をミドルウェアに記録するには、応答が書き込まれる前に応答をインターセプトして保存する必要があります。 。これを実現する方法は次のとおりです。
Write() 呼び出しをインターセプトして本体を保存するカスタム ライターを作成します。
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)
カスタム ライターを使用して応答をインターセプトするミドルウェア関数を実装します。
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
Gin にミドルウェアを登録するrouter:
router.Use(gin_body_log_middleware)
このミドルウェアはすべての応答をインターセプトし、ステータス コード 400 以上のリクエストの本文をログに記録します。静的ファイルリクエストの場合は、Gin エンジンをラップするより洗練されたラッパーが必要です。
以上がJin ミドルウェアで応答本文をログに記録するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。