log.go 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. package initialize
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "github.com/beego/beego/v2/core/logs"
  6. beego "github.com/beego/beego/v2/server/web"
  7. "log"
  8. "time"
  9. )
  10. func init() {
  11. log.SetFlags(log.Lshortfile | log.Ltime | log.Ldate)
  12. log.Println("系统日志初始化...")
  13. dateStr := time.Now().Format("2006-01-02")
  14. maxdays, err := beego.AppConfig.Int("maxdays")
  15. if err != nil {
  16. log.Println("无法获取maxdays:", err)
  17. }
  18. level, err := beego.AppConfig.Int("level")
  19. if err != nil {
  20. log.Println("无法获取level:", err)
  21. }
  22. maxlines, err := beego.AppConfig.Int("maxlines")
  23. if err != nil {
  24. log.Println("无法获取maxlines:", err)
  25. }
  26. dataSource := &struct {
  27. Filename string `json:"filename"`
  28. Level int `json:"level"`
  29. Maxlines int `json:"maxlines"`
  30. Maxsize int `json:"maxsize"`
  31. Daily bool `json:"daily"`
  32. Maxdays int `json:"maxdays"`
  33. Color bool `json:"color"`
  34. }{
  35. Filename: fmt.Sprintf("files/logs/%s/log.log", dateStr),
  36. Level: level,
  37. Maxlines: maxlines,
  38. Maxsize: 0,
  39. Daily: true,
  40. Maxdays: maxdays,
  41. Color: true,
  42. }
  43. dataSourceBytes, err := json.Marshal(dataSource)
  44. if err != nil {
  45. log.Println("无法创建dataSource:", err)
  46. }
  47. logs.SetLevel(level)
  48. adapter_type, err := beego.AppConfig.Int("adapter_type")
  49. if err != nil {
  50. log.Println("无法获取adapter_type:", err)
  51. }
  52. // 日志输出选择
  53. switch adapter_type {
  54. case 0:
  55. logs.SetLogger(logs.AdapterConsole)
  56. case 1:
  57. logs.Reset()
  58. logs.SetLogger(logs.AdapterFile, string(dataSourceBytes))
  59. case 2:
  60. logs.SetLogger(logs.AdapterFile, string(dataSourceBytes))
  61. default:
  62. logs.SetLogger(logs.AdapterConsole)
  63. }
  64. // 是否记录日志的调用层级 默认是logs.SetLogFuncCallDepth(2)
  65. logs.EnableFuncCallDepth(true)
  66. logs.Async()
  67. log.Println("系统日志初始化完成")
  68. }