slogパッケージ超入門 Kyoto.go #43 オフラインLT会@マネフォ京都)
by
Kota
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
slogパッケージ超入門 Kyoto.go #43 オフラインLT会@マネフォ京都 2023/07/14 @88888888_kota 1
Slide 2
Slide 2 text
自己紹介 八木 洸太(88888888_kota) 大阪府立大学・情報工学課程・ 4回生 ポジション ● バックエンド(Go) 最近 ● Finatextでインターン 趣味 ● アニメ(今期おすすめ:無職転生) ● 今年は人生初コミケに! (https://github.com/yagikota) 2
Slide 3
Slide 3 text
目次 ● slogの開発経緯について ● slogのデザインについて ● slogの基本機能について ● まとめ 3
Slide 4
Slide 4 text
slogの開発経緯 4
Slide 5
Slide 5 text
従来のlogパッケージ https://pkg.go.dev/log 課題 ● 構造化ロギングのサポートなし ● ログレベルのサポートなし zap、logrus、zerologといったサードパーティーライブラリを利用する必要があった → アプリケーションごとに使用しているロギングライブラリが異なり、出力の一貫性がな い 5
Slide 6
Slide 6 text
slogの登場 https://pkg.go.dev/golang.org/x/exp/slog(試験的な実装) ● 前述の課題を解決すべく、Go1.21で導入される予定(2023/8) ● structured loggingの略 ● 読み方は「スロッグ」 ○ slog考案者Jonathan Amsterdamがセッションでこのように発音していた 6
Slide 7
Slide 7 text
slogのデザイン 7
Slide 8
Slide 8 text
アーキテクチャ Record ● Loggerの出力メソッドを呼び出す ごとに作成されるログレコード Handler ● slogのバックエンド ● ログの出力フォーマットと出力先を 決める Logger ● slogのフロントエンド ● 開発者がログを生成するために 呼び出す出力メソッドを提供 8
Slide 9
Slide 9 text
アーキテクチャ ログレベルがINFOのログをJSON形式で出力 Logger Handler Record 出力結果 HandlerからLogger生成 Loggerのメソッドでログ生成 ログ生成の流れ JSONで出力 logger.Info(“Info message”) logger.Info(“Info message”) time=2023-07-09T13:33:07.016874+09:00 level=INFO msg=Info message" 9
Slide 10
Slide 10 text
slogの基本機能 10
Slide 11
Slide 11 text
デフォルトロガー パッケージのトプレベル関数からアクセスできるデ フォルトのロガーを提供している デフォルトの出力は ● INFOレベル以上 ● プレーンテキスト となっている 出力結果 出力されない JSONではない 11
Slide 12
Slide 12 text
ログレベル、出力形式のカスタマイズ DEBUG以上のログをJSONで出力 ● Handlerで出力形式やその他オプションを設 定してあげる slogでは以下のHandlerが提供されている ● JSONHandler ● TextHandler 出力結果 DEBUG以上に JSON形式で 12
Slide 13
Slide 13 text
ログメッセージ追加 logger.Info(message string, args … any) ● argsに(key,value)の順にログメッセージを追 加できる ● リテラルではなく、関数を用いていた方がよ い ● ミスを防げるし、パフォーマンス的にもよい 出力結果 13 推奨 key,valueの指定 をミスるとこのよう になる
Slide 14
Slide 14 text
などなど... 他にも色々機能が! 14
Slide 15
Slide 15 text
まとめ 15
Slide 16
Slide 16 text
まとめ Go1.21で導入予定のslogパッケージに関する概要を紹介 ● slogのデザイン ○ Logger ○ Record ○ Handler ● slogの基本機能 ○ デフォルトのロガー ○ ログレベル、出力形式のカスタマイズ ○ ログメッセージ追加 細かい機能については、ブログに記載してます。 16
Slide 17
Slide 17 text
参考文献 ● Design Doccument ○ https://go.googlesource.com/proposal/+/master/design/56345-structured-logging.md ● Discussion ○ https://github.com/golang/go/discussions/54763 ● Proposal ○ https://github.com/golang/go/issues/56345 ○ https://github.com/golang/go/issues/58243 ● セッション ○ https://opensourcelive.withgoogle.com/events/go-day-2022/watch?talk=talk2 ● ブログ記事 ○ https://betterstack.com/community/guides/logging/logging-in-go/ ○ https://www.sobyte.net/post/2022-10/go-slog/ ○ https://zenn.dev/88888888_kota/articles/7e97ff874083cf 17