>백엔드 개발 >Golang >Gin 미들웨어에서 응답 본문을 기록하는 방법은 무엇입니까?

Gin 미들웨어에서 응답 본문을 기록하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-09 09:14:02173검색

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 엔진을 래핑하는 보다 정교한 래퍼가 필요합니다.

위 내용은 Gin 미들웨어에서 응답 본문을 기록하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.