package main import ( "fmt" _ "gdyb/routers" "gdyb/service" "log" "os" "runtime" "time" "github.com/astaxie/beego" ) func init() { service.ConnectDB() } func PrintErr() { if err := recover(); err != nil { file, ferr := os.Create("panic.log") if ferr != nil { fmt.Println("无法输出panic.log文件", ferr.Error()) return } defer file.Close() g := log.New(file, "panic:", 0) g.Printf("panic at %v", time.Now()) g.Printf("%v", err) fmt.Printf("%v\r\n", err) for i := 0; i < 10; i++ { funcName, file, line, ok := runtime.Caller(i) if ok { fmt.Printf("[func:%v,file:%v,line:%v]\n", runtime.FuncForPC(funcName).Name(), file, line) g.Printf("[func:%v,file:%v,line:%v]\n", runtime.FuncForPC(funcName).Name(), file, line) } } } } func main() { defer PrintErr() beego.Run() }