コールスタックの情報をデバッグログに埋め込みたかったので方法を調べた。
logrus を使っているがロガーはなんでも良い。
Goでは runtime/debug.Stack()
や runtime.Callers
+ runtime.CallersFrames
といったruntimeパッケージの関数でコールスタックを取得できる。
runtime.Callers
はコールスタック内のフレームのプログラムカウンタを返し、runtime.CallersFrames
でフレームの情報を取得できる
log/slogの場合
Go 1.21で入ったslogでは、生成時のオプションで AddSource: true
を指定することで呼び出し元を出力できる。