高热共公日志库
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

102 lines
2.1 KiB

  1. package grlogs
  2. import (
  3. "bytes"
  4. "encoding/json"
  5. "fmt"
  6. "github.com/astaxie/beego"
  7. "github.com/astaxie/beego/logs"
  8. )
  9. const (
  10. _ = iota
  11. LEVEL_NONE = iota
  12. LEVEL_CRITICAL = iota
  13. LEVEL_ERROR = iota
  14. LEVEL_WARNING = iota
  15. LEVEL_WARN = iota
  16. LEVEL_INFO = iota
  17. LEVEL_DEBUG = iota
  18. LEVEL_ALL = iota
  19. )
  20. type ConsoleLogConfig struct {
  21. Level int `json:"level"`
  22. }
  23. type FileLogConfig struct {
  24. Filename string `json:"filename"`
  25. Level int `json:"level"`
  26. Maxlines int `json:"maxlines"`
  27. Daily bool `json:"daily"`
  28. Maxdays int `json:"maxdays"`
  29. Color bool `json:"color"`
  30. Rotate bool `json:"rotate"`
  31. }
  32. type ConnLogConfig struct {
  33. ReconnectOnMsg bool `json:"reconnect_on_msg"`
  34. Reconnect bool `json:"reconnect"`
  35. Net string `json:"net"`
  36. Addr string `json:"addr"`
  37. Level int `json:"level"`
  38. }
  39. var loggers = make(map[string]*Logger)
  40. type Logger struct {
  41. *logs.BeeLogger
  42. }
  43. func (l *Logger) Write(p []byte) (n int, err error) {
  44. l.Debug(bytes.NewBuffer(p).String())
  45. return
  46. }
  47. func (l *Logger) SetFormat() {
  48. }
  49. func (l *Logger) Stop() {
  50. l.BeeLogger.Close()
  51. }
  52. func GetLogger(name string) *Logger {
  53. if l, ok := loggers[name]; ok {
  54. return l
  55. } else {
  56. var level int = LEVEL_WARN
  57. if beego.BConfig.RunMode == "dev" {
  58. level = LEVEL_ALL
  59. }
  60. conf1 := FileLogConfig{
  61. Filename: GetCwd(fmt.Sprintf("runtime/logs/%s.log", name)),
  62. Level: LEVEL_ALL,
  63. Maxlines: 0,
  64. Daily: true,
  65. Maxdays: 7,
  66. Color: true,
  67. Rotate: true,
  68. }
  69. conf2 := ConsoleLogConfig{
  70. Level: level,
  71. }
  72. confString, _ := json.Marshal(&conf1)
  73. confString2, _ := json.Marshal(&conf2)
  74. loggers[name] = &Logger{}
  75. loggers[name].BeeLogger = logs.NewLogger()
  76. loggers[name].SetLogger(logs.AdapterFile, bytes.NewBuffer(confString).String())
  77. loggers[name].SetLogger(logs.AdapterConsole, bytes.NewBuffer(confString2).String())
  78. loggers[name].BeeLogger.SetPrefix("_" + name)
  79. loggers[name].BeeLogger.EnableFuncCallDepth(true)
  80. loggers[name].BeeLogger.SetLogFuncCallDepth(2)
  81. return loggers[name]
  82. }
  83. }