使用Zap 自訂net/http 日誌記錄
以自訂格式記錄來自net/http 的錯誤需要實現您自己的日誌記錄機制。 net/http 套件提供了一個包含 ErrorLog 欄位的 Server 結構,可讓您指定自訂記錄器。
實作自訂記錄器
取代預設記錄器,建立自訂實作:
type AppLogger struct { log *zap.SugaredLogger } func (l *AppLogger) Error(message string, keyAndValues ...interface{}) { l.log.Errorw(message, keyAndValues...) }
整合net/http
建立一個實作io.Writer的類型並委託給您的自訂記錄器:
type serverJsonWriter struct { *zap.Logger } func (w serverJsonWriter) Write(p []byte) (n int, err error) { w.Error(string(p)) return len(p), nil }
最後,實例化一個新的http.Server 並將ErrorLog 欄位設定為您的自訂作家:
server := &http.Server{ Addr: addr, Handler: handler, ErrorLog: logger.New(&serverJsonWriter{l}, "", 0), }
其中l 是你的zap 記錄器
檢索zap io.Writer
您可以透過在記錄器實例上呼叫logger.Writer() 來擷取zap io.Writer:
zapWriter := logger.Writer()
額外註解
以上是如何使用 Zap 實作 net/http 錯誤的自訂日誌記錄?的詳細內容。更多資訊請關注PHP中文網其他相關文章!