Ralat Log dalam Format Tersuai dengan net/http
Dalam net/http, ralat boleh dilog menggunakan Server.ErrorLog medan. Untuk mengelog ralat dalam format tersuai, anda boleh menggantikan pembalak lalai dengan pelaksanaan anda sendiri.
Pelaksanaan Pengelogan Tersuai
Untuk mencipta pengelog tersuai, tentukan jenis yang melaksanakan antara muka io.Writer, seperti yang dilihat dalam contoh berikut:
type CustomLogger struct { writer io.Writer } func (l *CustomLogger) Write(p []byte) (n int, err error) { // Implement custom logging logic here }
Menggunakan Logger Tersuai dalam net/http
Sebaik sahaja anda mempunyai pengelog tersuai anda, anda boleh menetapkannya sebagai ErrorLog untuk http.Server:
server := &http.Server{ Addr: ":8080", Handler: myHandler, ErrorLog: &CustomLogger{writer: os.Stderr}, }
Menggunakan Zap Logger untuk net /http Ralat Logging
Untuk ralat ditulis dalam format yang sama seperti Zap, anda perlu melaksanakan jenis serverJsonWriter yang memajukan mesej ralat kepada pengelog Zap. Begini caranya:
type serverJsonWriter struct { fw *fwdToZapWriter } func (w serverJsonWriter) Write(p []byte) (n int, err error) { w.fw.logger.Errorw(string(p)) return len(p), nil }
Di mana fwdToZapWriter ialah:
type fwdToZapWriter struct { logger *zap.SugaredLogger } func (fw *fwdToZapWriter) Write(p []byte) (n int, err error) { fw.logger.Errorw(string(p)) return len(p), nil }
Anda kemudian boleh menggunakan jenis serverJsonWriter dalam pelayan anda:
server := &http.Server{ Addr: ":8080", Handler: myHandler, ErrorLog: log.New(&serverJsonWriter{fw: &fwdToZapWriter{logger: myZapLogger}}, "", 0), }
Dengan melaksanakan langkah-langkah ini, anda boleh log ralat net/http dalam format tersuai anda sendiri menggunakan Zap logger anda.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyesuaikan Ralat Log masuk dalam Pakej net/http Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!