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

134 lines
3.1 KiB

  1. package grlogs
  2. import (
  3. "fmt"
  4. "github.com/astaxie/beego/logs"
  5. "os"
  6. "path"
  7. "strings"
  8. )
  9. var adatperSetMapper = map[Adapter]func(l *Logger, level Level) error{
  10. AdapterSocket: func(l *Logger, level Level) error {
  11. c := ConnLogConfig{
  12. ReconnectOnMsg: false,
  13. Reconnect: true,
  14. Net: "",
  15. Addr: "127.0.0.1:9888",
  16. Level: level,
  17. }
  18. return l.SetLogger(logs.AdapterConn, c.String())
  19. },
  20. AdapterFile: func(l *Logger, level Level) error {
  21. if wd, err := os.Getwd(); err == nil {
  22. c := FileLogConfig{
  23. Filename: path.Join(wd, fmt.Sprintf("runtime/logs/%s.log", l.Lable)),
  24. Level: level,
  25. Maxlines: 0,
  26. Daily: true,
  27. Maxdays: 7,
  28. Color: true,
  29. Rotate: true,
  30. }
  31. return l.SetLogger(logs.AdapterFile, c.String())
  32. } else {
  33. return err
  34. }
  35. },
  36. AdapterConsole: func(l *Logger, level Level) error {
  37. c := ConsoleLogConfig{Level: level}
  38. return l.SetLogger(logs.AdapterConsole, c.String())
  39. },
  40. AdapterElasticSearch: func(l *Logger, level Level) error {
  41. dsn := "http://es-cn-0pp1mm3hq000dnbh4.public.elasticsearch.aliyuncs.com:9200/"
  42. if os.Getenv(envkey) == "prod" || os.Getenv(envkey) == "" || os.Getenv(envkey) == "gray" {
  43. dsn = "http://es-cn-0pp1mm3hq000dnbh4.elasticsearch.aliyuncs.com:9200/"
  44. }
  45. c := EsConfig{
  46. Username: "elastic",
  47. Password: "Hellogaore@",
  48. Dsn: dsn,
  49. Level: level,
  50. Index: os.Getenv("GRLOG_APP_NAME"),
  51. }
  52. return l.SetLogger(logs.AdapterEs, c.String())
  53. },
  54. AdapterAliLs: func(l *Logger, level Level) error {
  55. var project string = "gaore-app-logstore"
  56. var endpoint string
  57. if os.Getenv(envkey) == "prod" || os.Getenv(envkey) == "" || os.Getenv(envkey) == "gray" {
  58. endpoint = project + ".cn-shenzhen-intranet.log.aliyuncs.com"
  59. } else if os.Getenv(envkey) == "dev" {
  60. endpoint = project + ".cn-shenzhen.log.aliyuncs.com"
  61. }
  62. c := AliLSConfig{
  63. Project: project,
  64. Endpoint: endpoint,
  65. KeyID: "LTAI4GCHwcqtrFD4DHRHxR4k",
  66. KeySecret: "Ln19xfVYy6OMlJeF9aBvFl4fhRUKBl",
  67. LogStore: "gaore-app-logstore",
  68. Topics: []string{os.Getenv("GRLOG_APP_NAME")},
  69. Source: "",
  70. Level: level,
  71. FlushWhen: 0,
  72. }
  73. return l.SetLogger(logs.AdapterAliLS, c.String())
  74. },
  75. }
  76. var adatperDropMapper = map[Adapter]func(l *Logger) error{
  77. AdapterAliLs: func(l *Logger) error {
  78. return l.BeeLogger.DelLogger(logs.AdapterAliLS)
  79. },
  80. AdapterFile: func(l *Logger) error {
  81. return l.BeeLogger.DelLogger(logs.AdapterFile)
  82. },
  83. AdapterConsole: func(l *Logger) error {
  84. return l.BeeLogger.DelLogger(logs.AdapterConsole)
  85. },
  86. AdapterElasticSearch: func(l *Logger) error {
  87. return l.BeeLogger.DelLogger(logs.AdapterEs)
  88. },
  89. }
  90. func formatLog(f interface{}, v ...interface{}) string {
  91. var msg string
  92. switch f.(type) {
  93. case string:
  94. msg = f.(string)
  95. if len(v) == 0 {
  96. return msg
  97. }
  98. if strings.Contains(msg, "%") && !strings.Contains(msg, "%%") {
  99. //format string
  100. } else {
  101. //do not contain format char
  102. msg += strings.Repeat(" %v", len(v))
  103. }
  104. default:
  105. msg = fmt.Sprint(f)
  106. if len(v) == 0 {
  107. return msg
  108. }
  109. msg += strings.Repeat(" %v", len(v))
  110. }
  111. return fmt.Sprintf(msg, v...)
  112. }