ホームページ >バックエンド開発 >Golang >Go の net/http パッケージでのログインをカスタマイズするにはどうすればよいですか?

Go の net/http パッケージでのログインをカスタマイズするにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-28 02:11:11609ブラウズ

How Can I Customize Logging in Go's net/http Package?

カスタム ライターを使用して 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。