首頁 > 後端開發 > Golang > 主體

如何在 Go 的 net/http 套件中自訂日誌記錄?

Linda Hamilton
發布: 2024-11-28 02:11:11
原創
577 人瀏覽過

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

使用自訂編寫器自訂net/http 日誌記錄

要以自訂格式記錄來自net/http 的錯誤,請利用http.Server.ErrorLog 字段,它接受log.Logger的實作

實作自訂記錄器

要實作您自己的記錄器,請定義一個滿足io.Writer 介面的類型並實作Write 方法以將訊息轉發到您的所需的日誌記錄格式。例如:

type AppLogger struct {
    log *zap.SugaredLogger
}

func (l *AppLogger) Write(p []byte) (n int, err error) {
    l.log.Errorw(string(p))
    return len(p), nil
}
登入後複製

與net/http 整合

要將自訂記錄器與net/http 一起使用,請將AppLogger 類型的執行個體指派給ErrorLog欄位您的http.Server 的:

server := &http.Server{
    Addr:     addr,
    Handler:  handler,
    ErrorLog: logger.New(&AppLogger{logger}, "", 0),
}
登入後複製

使用Zap記錄器

要將Zap 記錄器與net/http 集成,您可以建立自訂編寫器,將錯誤訊息轉發到您的Zap 記錄器:

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
}
登入後複製

然後,分配一個實例將您的fwdToZapWriter 加入到http.Server 的ErrorLog欄位:

server := &http.Server{
    Addr:     addr,
    Handler:  handler,
    ErrorLog: logger.New(&fwdToZapWriter{logger}, "", 0),
}
登入後複製

透過實作這些步驟,您將以您的 AppLogger 或 Zap 記錄器提供的自訂格式記錄來自 net/http 的錯誤。

以上是如何在 Go 的 net/http 套件中自訂日誌記錄?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板