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の起こる処理