Home > Backend Development > Golang > How Can I Log Both Request and Response Data in My HTTP API?

How Can I Log Both Request and Response Data in My HTTP API?

Susan Sarandon
Release: 2024-11-05 18:04:02
Original
956 people have browsed it

How Can I Log Both Request and Response Data in My HTTP API?

Logging HTTP Response Data for Comprehensive Logging

A common challenge in logging is capturing both request and response data in a single log. By default, the content of the http.ResponseWriter stream is not accessible, making it difficult to extract the response for logging purposes. However, there are ways to achieve this capability.

One approach is to utilize the io.MultiWriter utility. By creating a writer that duplicates its writes to multiple destinations, we can log the response and send it to the client simultaneously:

<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>
Copy after login

Another option is to employ io.TeeReader to create a reader that writes to a specified writer. This allows us to create a copy of the req.Body stream and record it in the log buffer:

<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>
Copy after login

These techniques enable you to capture both request and response data in your logs, providing a comprehensive view of your API's activity.

The above is the detailed content of How Can I Log Both Request and Response Data in My HTTP API?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template