golangのstack traceをファイルに保存
[tag:]
予期せぬエラーでプログラムが落ちたときのために
golangのstack traceをファイルに保存しておきたいが、
ググってもkernel32を使う方法が出てくることが多い。
下記方法で一応解決した。
import (
"os"
"runtime/debug"
)
defer func() {
if r := recover(); r != nil {
w, err := os.Create("debug.txt")
if err != nil {
os.Exit(1)
}
os.Stderr = w
debug.PrintStack()
}
}()
// panicの起こる処理