高热共公日志库
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.

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