概要
Goでlog/slogを使ったcontextual loggingについてまとめる。
log/slogとは
Go1.21で追加された構造化ロギングのためのパッケージ。
構造化ロギングとは、ログを構造化されたデータとして出力すること。
今まではGoで構造化ロギングをする場合はサードパーティのパッケージを利用するか、自前でスクラッチするかしか手段がなかったが、今後は標準パッケージも視野に入るようになった。
デフォルトではテキスト形式またはJson形式で出力することができる。
slogはcontextを持たせることができるため、リクエストベースの情報を詰めることもできる。
slogでcontextual logging
ログにリクエストベースの情報を持たせるLoggerを作成するコードを書いてみる。
以下は、contextにトレースIDを持たせてログ出力を想定したコード。
slog.Handlerインターフェースを実装することで、自前のHandlerを作成することができる。[]
上記のコードを実行すると、次のようなログが出力される。
所感
構造化ロギングには自前のパッケージを使っていたが、go1.21のリリースとともに差し替えをした。