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 サイトの他の関連記事を参照してください。