Bagaimana untuk Log Data Permintaan dan Respons dalam Go?

DDD
Lepaskan: 2024-11-06 14:37:02
asal
603 orang telah melayarinya

How to Log Both Request and Response Data in Go?

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!