main.go 829B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. package main
  2. import (
  3. "fmt"
  4. _ "gdyb/routers"
  5. "gdyb/service"
  6. "log"
  7. "os"
  8. "runtime"
  9. "time"
  10. "github.com/astaxie/beego"
  11. )
  12. func init() {
  13. service.ConnectDB()
  14. }
  15. func PrintErr() {
  16. if err := recover(); err != nil {
  17. file, ferr := os.Create("panic.log")
  18. if ferr != nil {
  19. fmt.Println("无法输出panic.log文件", ferr.Error())
  20. return
  21. }
  22. defer file.Close()
  23. g := log.New(file, "panic:", 0)
  24. g.Printf("panic at %v", time.Now())
  25. g.Printf("%v", err)
  26. fmt.Printf("%v\r\n", err)
  27. for i := 0; i < 10; i++ {
  28. funcName, file, line, ok := runtime.Caller(i)
  29. if ok {
  30. fmt.Printf("[func:%v,file:%v,line:%v]\n", runtime.FuncForPC(funcName).Name(), file, line)
  31. g.Printf("[func:%v,file:%v,line:%v]\n", runtime.FuncForPC(funcName).Name(), file, line)
  32. }
  33. }
  34. }
  35. }
  36. func main() {
  37. defer PrintErr()
  38. beego.Run()
  39. }