こんにちは。Tomoyuki(@tomoyuki65)です。
Go言語(Golang)のバージョン1.25からログ出力用のslogに新しいメソッド「GroupAttrs」が追加され、ログ属性をグループ化できるようになりました。
この記事では、そんなGo言語(Golang)のslog.GroupAttrsの使い方についてご紹介します。
Go言語(Golang)slog.GroupAttrsの使い方|Go1.25でログ属性をグループ化
Go言語(Golang)のバージョン1.24以前では、[]slog.Attrを使って構造化ログを作ることが可能でしたが、グルーピングとの相性が悪かったのが課題でした。
package main
import (
"log/slog"
)
func main() {
// []slog.Attrを使ったログ属性の構造化
attrs := []slog.Attr{
slog.String("id", "xxxx-xxxx-0001"),
slog.String("name", "田中太郎"),
}
// Groupはkey-value形式を期待するためそのままは使えない
slog.Group("ユーザー", attrs...)
// slog.Infoは[]slog.Attrをそのまま解釈できない
slog.Info("user", attrs)
}
Go言語(Golang)のバージョン1.25で新しいメソッドとして「GroupAttrs」が追加されたため、これを利用すると以下のようにすることが可能です。
package main
import (
"log/slog"
)
func main() {
// []slog.Attrを使ったログ属性の構造化
attrs := []slog.Attr{
slog.String("id", "xxxx-xxxx-0001"),
slog.String("name", "田中太郎"),
}
// slog.GroupAttrsを使ってグループ化
groupAttrs := slog.GroupAttrs("user", attrs...)
// slog.Infoでslog.GroupAttrsを解釈
slog.Info("ユーザー", groupAttrs)
}
実行結果の例
2009/11/10 23:00:00 INFO ユーザー user.id=xxxx-xxxx-0001 user.name=田中太郎
最後に
今回はGo言語(Golang)のslog.GroupAttrsの使い方についてご紹介しました。
[]slog.Attrを使って構造化ログを作っていた場合は、GroupAttrsを使うことでより簡潔な記述ができる可能性があります。
Goのバージョン1.25以上を利用する際は、ぜひ参考にしてみて下さい。


コメント