ホームページ > バックエンド開発 > Golang > Jin ミドルウェアで応答本文をログに記録するにはどうすればよいですか?

Jin ミドルウェアで応答本文をログに記録するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-09 09:14:02
オリジナル
207 人が閲覧しました

How to Log Response Body in Gin Middleware?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート