Open3

log/slog への移行について考えてみる

ucprucpr

目標

  • 2023/08 に Go1.21 のリリースで log/slog パッケージが導入されました。 2024/04 現在、実際にプロダクション環境への導入を検討するために他社事例やその他もろもろざっくり調査・検討してみる
ucprucpr

log/slog 採用事例

ARIGATOBANK

https://medium.com/arigatobank-tech-blog/go-1-21-slog-5f0d9804204f

  • zap をもともと使っていたけど一部サービスで slog を利用している
  • Cloud Logging 向けの Handler, ReplaceAttr を実装して使用している
  • 出力に含まれるファイル名や行番号の取得の部分でログ出力元のファイル名や行番号として独自関数の定義位置が出力されてしまうので、修正の実装を入れてあげる必要があるとのこと

enechain

https://techblog.enechain.com/entry/go-slog-2023

  • connect-go の interceptor でデフォルトでつけたい Attribute を設定して引き回している (request id など)
  • slogctx を使って context で logger を持っている
  • ReplaceAttr でログに出したくない Attribute をマスキングしている

Trivy

Issue: https://github.com/aquasecurity/trivy/issues/6451
PR: https://github.com/aquasecurity/trivy/pull/6466

  • zap から slog に移行していた
  • zap のほうがパフォーマンスはまだ良いけど Trivy では大量にログを吐くなどが無いので問題ない想定とのこと

その他

https://www.reddit.com/r/golang/comments/17wbrka/is_slog_production_ready/

reddit の上記のスレッドを見てみたところ採用しているところがありそう