PR

Go言語(Golang)slog.GroupAttrsの使い方|Go1.25でログ属性をグループ化

2. 基礎

こんにちは。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以上を利用する際は、ぜひ参考にしてみて下さい。

 

この記事を書いた人
Tomoyuki

SE→ブロガーを経て、現在はSoftware Engineer(Web/Gopher)をしています!

Tomoyukiをフォローする
2. 基礎
スポンサーリンク
Tomoyukiをフォローする

コメント

タイトルとURLをコピーしました