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.

150 lines
3.4 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. appName := os.Getenv("GRLOG_APP_NAME")
  63. topic := os.Getenv("GRLOG_TOPIC")
  64. if topic == "" {
  65. topic = appName
  66. }
  67. c := &AliLSConfig{
  68. Project: project,
  69. Endpoint: endpoint,
  70. KeyID: "LTAI5tMA7iMGFfuc3xSRVCGQ",
  71. KeySecret: "z98EpzmYmgiVLKizxP7pMF4BPbHfPV",
  72. LogStore: appName,
  73. Topics: []string{topic},
  74. Source: source,
  75. Level: level,
  76. FlushWhen: 0,
  77. }
  78. return c
  79. }
  80. func GenEsConfig(level Level) *EsConfig {
  81. dsn := "http://es-cn-tl32xlfmu00015h34.public.elasticsearch.aliyuncs.com:9200/"
  82. if os.Getenv(envKey) == "production" || os.Getenv(envKey) == "" || os.Getenv(envKey) == "gray" {
  83. dsn = "http://es-cn-tl32xlfmu00015h34.elasticsearch.aliyuncs.com:9200/"
  84. }
  85. c := &EsConfig{
  86. Username: "kaifa_api",
  87. Password: "2quYX3bTeahO",
  88. Dsn: dsn,
  89. Level: level,
  90. Index: os.Getenv("GRLOG_APP_NAME"),
  91. }
  92. return c
  93. }
  94. var adatperDropMapper = map[Adapter]func(l *Logger) error{
  95. AdapterAliLs: func(l *Logger) error {
  96. return l.BeeLogger.DelLogger(logs.AdapterAliLS)
  97. },
  98. AdapterFile: func(l *Logger) error {
  99. return l.BeeLogger.DelLogger(logs.AdapterFile)
  100. },
  101. AdapterConsole: func(l *Logger) error {
  102. return l.BeeLogger.DelLogger(logs.AdapterConsole)
  103. },
  104. AdapterElasticSearch: func(l *Logger) error {
  105. return l.BeeLogger.DelLogger(logs.AdapterEs)
  106. },
  107. }
  108. func formatLog(f interface{}, v ...interface{}) string {
  109. var msg string
  110. switch f.(type) {
  111. case string:
  112. msg = f.(string)
  113. if len(v) == 0 {
  114. return msg
  115. }
  116. if strings.Contains(msg, "%") && !strings.Contains(msg, "%%") {
  117. //format string
  118. } else {
  119. //do not contain format char
  120. msg += strings.Repeat(" %v", len(v))
  121. }
  122. default:
  123. msg = fmt.Sprint(f)
  124. if len(v) == 0 {
  125. return msg
  126. }
  127. msg += strings.Repeat(" %v", len(v))
  128. }
  129. return fmt.Sprintf(msg, v...)
  130. }