Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Menyesuaikan Ralat Log masuk dalam Pakej net/http Go?

Bagaimanakah Saya Boleh Menyesuaikan Ralat Log masuk dalam Pakej net/http Go?

Susan Sarandon
Susan Sarandonasal
2024-11-28 10:48:12682semak imbas

How Can I Customize Error Logging in Go's net/http Package?

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!

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