使用自定义编写器自定义 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中文网其他相关文章!