Melog Data ResponseWriter HTTP
Dalam Go, permintaan pengelogan dan data tindak balas secara serentak boleh terbukti mencabar. Untuk menangani perkara ini, pertimbangkan untuk menggunakan io.MultiWriter, yang menduplikasi semua penulisan kepada berbilang penulis.
<code class="go">func api1(w http.ResponseWriter, req *http.Request) { var log bytes.Buffer rsp := io.MultiWriter(w, &log) // From this point onward, use rsp instead of w ... }</code>
Dengan persediaan ini, pendua rsp menulis kepada kedua-dua w (penulis respons) dan penimbal log. Kandungan penimbal log kemudiannya boleh ditangkap untuk tujuan pengelogan.
Pilihan lain ialah menggunakan io.TeeReader untuk menduplikasi bacaan daripada badan permintaan. Ini memastikan muatan permintaan direkodkan juga.
<code class="go">func api1(w http.ResponseWriter, req *http.Request) { var log bytes.Buffer tee := io.TeeReader(req.Body, &log) err := json.NewDecoder(tee).Decode(&requestData) ... }</code>
Dalam senario ini, json.Decoder membaca dari tee, dengan berkesan menyalin badan permintaan ke dalam penimbal log.
Dengan melaksanakan teknik ini , anda boleh menulis log bermakna yang menangkap kedua-dua data permintaan dan respons, memberikan maklumat berharga untuk tujuan penyelesaian masalah dan penyahpepijatan.
Atas ialah kandungan terperinci Bagaimana untuk Log Data Permintaan dan Respons dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!