go recover 之后打印 panic 的调用栈
目录
打印 recover 的 panic 调用栈
在很多场景下,我们都需要对 panic 进行 recover 捕获,然后 recover 捕获后打印的日志是没有堆栈信息的,非常不利于问题排查,
可以用 runtime.Stack 实现堆栈打印
func main(){
defer func() {
if rec := recover(); rec != nil {
buf := make([]byte, 1<<16)
runtime.Stack(buf, true)
log..Errorln("recover success") // 这里替换成自己的 log
log.Errorf("recover ", string(buf)) // 这里替换成自己的 log
}
}()
panic("test err")
}