0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【echo】カスタムloggerの実装

Posted at

はじめに

ハンドラーの処理をロギングする際に、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種類の項目をサンプルに記載しましたが、その他の項目については、こちらを確認してください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?