はじめに
ハンドラーの処理をロギングする際に、echo middlewareに用意されているloggerではなくサードパーティのロギングライブラリを利用したかったため、カスタムしたloggerをechoに設定する必要がありました。
以下を前提条件とします。
- Go version:1.19
- echo version:4.0.0
- ロギングライブラリ:logrus
実装
logrusをカスタムloggerとして設定する場合は、以下のコードになります。
ポイントは、logrus.Fields構造体のフィールドを増やすだけではなく、RequestLoggerConfigのフィールドにあるLogXxxの値をtrueにしておくことです。
以下のようにフィールドを列挙してログに残したい項目を追加していきましょう。
log := logrus.New()
e.Use(middleware.RequestLoggerWithConfig(middleware.RequestLoggerConfig{
LogMethod: true,
LogURI: true,
LogStatus: true,
LogResponseSize: true,
LogValuesFunc: func(c echo.Context, values middleware.RequestLoggerValues) error {
log.WithFields(logrus.Fields{
"method": values.Method,
"URI": values.URI,
"status": values.Status,
"response_size": values.ResponseSize,
}).Info("request")
return nil
},
}))
参考
上記のサンプルコードは、こちらの公式ドキュメントに記載されています。
logger middlewareのソースコードはこちらです。今回は4種類の項目をサンプルに記載しましたが、その他の項目については、こちらを確認してください。