| 123456789101112131415161718192021222324252627282930313233 |
- package log
- import (
- "fmt"
- "os"
- "path/filepath"
- "runtime/debug"
- "time"
- )
- //捕获panic信息,输出到log文件
- func PanicHandler(exeName string) {
- if err := recover(); err != nil {
- now := time.Now() //获取当前时间
- pid := os.Getpid() //获取进程ID
- time_str := now.Format("200601021504") //设定时间格式
- fname := fmt.Sprintf("%s-%d-%s-dump.log", exeName, pid, time_str) //保存错误信息文件名:程序名-进程ID-当前时间(年月日时分秒)
- path := "./panicLog"
- os.MkdirAll(path, 0777)
- fn := filepath.Join(path, fname)
- f, osErr := os.Create(fn)
- if osErr != nil {
- return
- }
- defer f.Close()
- f.WriteString(fmt.Sprintf("%v\r\n", err)) //输出panic信息
- f.WriteString("========\r\n")
- f.WriteString(string(debug.Stack())) //输出堆栈信息
- }
- }
|