Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Melaksanakan Pembalakan Tersuai untuk Ralat bersih/http Menggunakan Zap?

Bagaimanakah Saya Boleh Melaksanakan Pembalakan Tersuai untuk Ralat bersih/http Menggunakan Zap?

Patricia Arquette
Patricia Arquetteasal
2024-11-26 09:33:09140semak imbas

How Can I Implement Custom Logging for net/http Errors Using Zap?

Pengelogan Tersuai untuk net/http dengan Zap

Ralat pengelogan daripada net/http dalam format tersuai memerlukan pelaksanaan mekanisme pengelogan anda sendiri. Pakej net/http menyediakan struct Pelayan yang termasuk medan ErrorLog, membolehkan anda menentukan pengelog tersuai.

Melaksanakan Logger Tersuai

Untuk menggantikan pembalak lalai , buat pelaksanaan tersuai:

type AppLogger struct {
  log *zap.SugaredLogger
}

func (l *AppLogger) Error(message string, keyAndValues ...interface{}) {
  l.log.Errorw(message, keyAndValues...)
}

Menyepadukan dengan net/http

Buat jenis yang melaksanakan io.Writer dan wakilkan kepada logger tersuai anda:

type serverJsonWriter struct {
  *zap.Logger
}

func (w serverJsonWriter) Write(p []byte) (n int, err error) {
  w.Error(string(p))
  return len(p), nil
}

Akhir sekali, nyatakan http.Server baharu dan tetapkan medan ErrorLog kepada penulis tersuai anda:

server := &http.Server{
  Addr:     addr,
  Handler:  handler,
  ErrorLog: logger.New(&serverJsonWriter{l}, "", 0),
}

di mana saya adalah pengecat zap anda contoh.

Mendapatkan semula zap io.Writer

Anda boleh mendapatkan zap io.Writer dengan memanggil logger.Writer() pada contoh logger:

zapWriter := logger.Writer()

Tambahan Nota

  • Jenis serverJsonWriter menyerikan mesej log kepada format JSON, yang sepadan dengan format lalai zap.
  • Anda boleh menyesuaikan jenis serverJsonWriter untuk menambah medan tambahan atau pilihan pemformatan khusus untuk keperluan pembalakan anda.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Pembalakan Tersuai untuk Ralat bersih/http Menggunakan Zap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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