Zap を使用した net/http のカスタム ロギング
カスタム形式で net/http からエラーをロギングするには、独自のロギング メカニズムを実装する必要があります。 net/http パッケージには、ErrorLog フィールドを含むサーバー構造体が用意されており、カスタム ロガーを指定できます。
カスタム ロガーの実装
デフォルトのロガーを置き換えるには、カスタム実装を作成します:
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 はザップロガーですinstance.
zap io.Writer の取得
ロガー インスタンスで logger.Writer() を呼び出すことで、zap io.Writer を取得できます:
zapWriter := logger.Writer()
追加注
以上がZap を使用して net/http エラーのカスタム ログを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。