ホームページ > バックエンド開発 > Golang > Zap を使用して net/http エラーのカスタム ログを実装するにはどうすればよいですか?

Zap を使用して net/http エラーのカスタム ログを実装するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-11-26 09:33:09
オリジナル
180 人が閲覧しました

How Can I Implement Custom Logging for net/http Errors Using Zap?

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()
ログイン後にコピー

追加注

  • serverJsonWriter タイプは、ログ メッセージを JSON 形式にシリアル化し、zap のデフォルト形式と一致します。
  • serverJsonWriter タイプをカスタマイズして、フィールドや書式設定オプションを追加できます。ログのニーズに合わせて指定します。

以上がZap を使用して net/http エラーのカスタム ログを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート