포괄적 로깅을 위한 HTTP 응답 데이터 로깅
로깅의 일반적인 과제는 단일 로그에 요청 및 응답 데이터를 모두 캡처하는 것입니다. 기본적으로 http.ResponseWriter 스트림의 콘텐츠에 액세스할 수 없으므로 로깅 목적으로 응답을 추출하기가 어렵습니다. 그러나 이 기능을 달성할 수 있는 방법이 있습니다.
한 가지 접근 방식은 io.MultiWriter 유틸리티를 활용하는 것입니다. 여러 대상에 쓰기를 복제하는 작성기를 생성하면 응답을 기록하고 클라이언트에 동시에 보낼 수 있습니다.
<code class="go">func api1(w http.ResponseWriter, req *http.Request) { var log bytes.Buffer rsp := io.MultiWriter(w, &log) // Perform operations and write to 'rsp' // Now, 'log' contains a duplicate of the response data sent to the client. }</code>
또 다른 옵션은 io.TeeReader를 사용하여 지정된 작가. 이를 통해 req.Body 스트림의 복사본을 생성하고 이를 로그 버퍼에 기록할 수 있습니다.
<code class="go">func api1(w http.ResponseWriter, req *http.Request) { var log bytes.Buffer tee := io.TeeReader(req.Body, &log) // Perform operations using tee as the 'body' // Now, 'log' contains a copy of the request body data. }</code>
이러한 기술을 사용하면 로그에 요청 및 응답 데이터를 모두 캡처하여 포괄적인 보기를 제공할 수 있습니다. API 활동.
위 내용은 내 HTTP API에 요청 및 응답 데이터를 모두 기록하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!