slogを使ったContextual Logging

概要

Goでlog/slogを使ったcontextual loggingについてまとめる。

log/slogとは

Go1.21で追加された構造化ロギングのためのパッケージ。

構造化ロギングとは、ログを構造化されたデータとして出力すること。

今まではGoで構造化ロギングをする場合はサードパーティのパッケージを利用するか、自前でスクラッチするかしか手段がなかったが、今後は標準パッケージも視野に入るようになった。

デフォルトではテキスト形式またはJson形式で出力することができる。

slogはcontextを持たせることができるため、リクエストベースの情報を詰めることもできる。

slogでcontextual logging

ログにリクエストベースの情報を持たせるLoggerを作成するコードを書いてみる。

以下は、contextにトレースIDを持たせてログ出力を想定したコード。

slog.Handlerインターフェースを実装することで、自前のHandlerを作成することができる。[]

上記のコードを実行すると、次のようなログが出力される。

所感

構造化ロギングには自前のパッケージを使っていたが、go1.21のリリースとともに差し替えをした。

参照