カスタム ライターを使用して 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 logger によって提供されるカスタマイズされた形式で net/http からのエラーをログに記録することになります。
以上がGo の net/http パッケージでのログインをカスタマイズするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。