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

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

Susan Sarandon
リリース: 2024-11-28 10:48:12
オリジナル
681 人が閲覧しました

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

net/http を使用したカスタム形式でのエラーのログ記録

net/http では、Server.ErrorLog を使用してエラーをログに記録できます。 フィールド。カスタム形式でエラーをログに記録するには、デフォルトのロガーを独自の実装に置き換えることができます。

カスタム ロギングの実装

カスタム ロガーを作成するには、次のタイプを定義します。以下に示すように、io.Writer インターフェイスを実装します。例:

type CustomLogger struct {
    writer io.Writer
}

func (l *CustomLogger) Write(p []byte) (n int, err error) {
    // Implement custom logging logic here
}
ログイン後にコピー

net/http でのカスタム ロガーの使用

カスタム ロガーを取得したら、それを http.Server の ErrorLog として設定できます。

server := &http.Server{
    Addr:       ":8080",
    Handler:    myHandler,
    ErrorLog: &CustomLogger{writer: os.Stderr},
}
ログイン後にコピー

net/http エラーに対する Zap Logger の使用ロギング

エラーを Zap と同じ形式で書き込むには、エラー メッセージを Zap ロガーに転送する serverJsonWriter タイプを実装する必要があります。方法は次のとおりです:

type serverJsonWriter struct {
    fw *fwdToZapWriter
}

func (w serverJsonWriter) Write(p []byte) (n int, err error) {
    w.fw.logger.Errorw(string(p))
    return len(p), nil
}
ログイン後にコピー

fwdToZapWriter は次のとおりです:

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

サーバーで serverJsonWriter タイプを使用できます:

server := &http.Server{
    Addr:       ":8080",
    Handler:    myHandler,
    ErrorLog: log.New(&serverJsonWriter{fw: &fwdToZapWriter{logger: myZapLogger}}, "", 0),
}
ログイン後にコピー

これらの手順を実装すると、 Zap を使用して、独自のカスタム形式で net/http エラーをログに記録できますロガー。

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

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