使用自訂編寫器自訂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中文網其他相關文章!