Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

145 Zeilen
3.3 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. c := GenEsConfig(level)
  42. return l.SetLogger(logs.AdapterEs, c.String())
  43. },
  44. AdapterAliLs: func(l *Logger, level Level) error {
  45. c := GenAliConfig(level)
  46. return l.SetLogger(logs.AdapterAliLS, c.String())
  47. },
  48. }
  49. func GenAliConfig(level Level) *AliLSConfig {
  50. var project = "gr-go-project"
  51. var endpoint string
  52. intranet := os.Getenv("GRLOG_INTERNET") != "public"
  53. if intranet && (os.Getenv(envKey) == "development" || os.Getenv(envKey) == "testing") {
  54. intranet = false
  55. }
  56. if intranet {
  57. endpoint = "cn-hongkong-intranet.log.aliyuncs.com"
  58. } else {
  59. endpoint = "cn-hongkong.log.aliyuncs.com"
  60. }
  61. source := os.Getenv("GRLOG_SOURCE")
  62. c := &AliLSConfig{
  63. Project: project,
  64. Endpoint: endpoint,
  65. KeyID: "LTAI5tMA7iMGFfuc3xSRVCGQ",
  66. KeySecret: "z98EpzmYmgiVLKizxP7pMF4BPbHfPV",
  67. LogStore: os.Getenv("GRLOG_APP_NAME"),
  68. Topics: []string{os.Getenv("GRLOG_TOPIC")},
  69. Source: source,
  70. Level: level,
  71. FlushWhen: 0,
  72. }
  73. return c
  74. }
  75. func GenEsConfig(level Level) *EsConfig {
  76. dsn := "http://es-cn-tl32xlfmu00015h34.public.elasticsearch.aliyuncs.com:9200/"
  77. if os.Getenv(envKey) == "production" || os.Getenv(envKey) == "" || os.Getenv(envKey) == "gray" {
  78. dsn = "http://es-cn-tl32xlfmu00015h34.elasticsearch.aliyuncs.com:9200/"
  79. }
  80. c := &EsConfig{
  81. Username: "kaifa_api",
  82. Password: "2quYX3bTeahO",
  83. Dsn: dsn,
  84. Level: level,
  85. Index: os.Getenv("GRLOG_APP_NAME"),
  86. }
  87. return c
  88. }
  89. var adatperDropMapper = map[Adapter]func(l *Logger) error{
  90. AdapterAliLs: func(l *Logger) error {
  91. return l.BeeLogger.DelLogger(logs.AdapterAliLS)
  92. },
  93. AdapterFile: func(l *Logger) error {
  94. return l.BeeLogger.DelLogger(logs.AdapterFile)
  95. },
  96. AdapterConsole: func(l *Logger) error {
  97. return l.BeeLogger.DelLogger(logs.AdapterConsole)
  98. },
  99. AdapterElasticSearch: func(l *Logger) error {
  100. return l.BeeLogger.DelLogger(logs.AdapterEs)
  101. },
  102. }
  103. func formatLog(f interface{}, v ...interface{}) string {
  104. var msg string
  105. switch f.(type) {
  106. case string:
  107. msg = f.(string)
  108. if len(v) == 0 {
  109. return msg
  110. }
  111. if strings.Contains(msg, "%") && !strings.Contains(msg, "%%") {
  112. //format string
  113. } else {
  114. //do not contain format char
  115. msg += strings.Repeat(" %v", len(v))
  116. }
  117. default:
  118. msg = fmt.Sprint(f)
  119. if len(v) == 0 {
  120. return msg
  121. }
  122. msg += strings.Repeat(" %v", len(v))
  123. }
  124. return fmt.Sprintf(msg, v...)
  125. }