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

Go で net/http のカスタム ロギングを実装するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-29 13:50:14
オリジナル
946 人が閲覧しました

How Can I Implement Custom Logging for net/http in Go?

net/http でのカスタム ログイン

net/http パッケージは、Go アプリケーションで HTTP リクエストとレスポンスを処理する便利な方法を提供します。ただし、エラー報告には独自のデフォルト ロガーが使用されます。カスタマイズされたエラー ログの場合、net/http のサーバー構造体にカスタム ロガーを指定できます。この記事では、これを実現する方法を説明します。

カスタム ロガーの実装

内部でザップ ロガーを使用する AppLogger というカスタム ロガー実装があるとします。このカスタム ロガーを net/http と統合するには、io.Writer インターフェイスを実装し、AppLogger を使用してエラーを書き込む新しいタイプを作成できます。

type serverJsonWriter struct {
    io.Writer
}

func (w serverJsonWriter) Write(p []byte) (n int, err error) {
    // Here you would implement custom logging logic using your AppLogger
    // ...
    return len(p), nil
}
ログイン後にコピー

サーバー構造体の作成

サーバー構造体でカスタム ロガーを使用するには、ErrorLog フィールドをサーバー構造体のインスタンスに設定するだけです。サーバーJsonWriterタイプ。また、AppLogger がラップする zap ロガーを使用して log.Logger を初期化する必要もあります。

logger, err := cfg.Build()
if err != nil {
    // Handle error
}

server := &http.Server{
    Addr:     addr,
    Handler:  handler,
    ErrorLog: logger.New(&serverJsonWriter{}, "", 0),
}
ログイン後にコピー

このメソッドを実装すると、カスタム仕様に従って net/http エラーがログに記録され、より多くのエラーが可能になります。アプリケーションのログ記録とエラー報告を制御します。

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

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