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

140 lines
3.2 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 string = "gaore-app-logstore"
  51. var endpoint string
  52. if os.Getenv(envkey) == "prod" || os.Getenv(envkey) == "" || os.Getenv(envkey) == "gray" {
  53. endpoint = project + ".cn-shenzhen-intranet.log.aliyuncs.com"
  54. } else if os.Getenv(envkey) == "dev" {
  55. endpoint = project + ".cn-shenzhen.log.aliyuncs.com"
  56. }
  57. c := &AliLSConfig{
  58. Project: project,
  59. Endpoint: endpoint,
  60. KeyID: "LTAI4GCHwcqtrFD4DHRHxR4k",
  61. KeySecret: "Ln19xfVYy6OMlJeF9aBvFl4fhRUKBl",
  62. LogStore: "gaore-app-logstore",
  63. Topics: []string{os.Getenv("GRLOG_APP_NAME")},
  64. Source: "",
  65. Level: level,
  66. FlushWhen: 0,
  67. }
  68. return c
  69. }
  70. func GenEsConfig(level Level) *EsConfig {
  71. dsn := "http://es-cn-tl32xlfmu00015h34.public.elasticsearch.aliyuncs.com:9200/"
  72. if os.Getenv(envkey) == "prod" || os.Getenv(envkey) == "" || os.Getenv(envkey) == "gray" {
  73. dsn = "http://es-cn-tl32xlfmu00015h34.elasticsearch.aliyuncs.com:9200/"
  74. }
  75. c := &EsConfig{
  76. Username: "kaifa_api",
  77. Password: "2quYX3bTeahO",
  78. Dsn: dsn,
  79. Level: level,
  80. Index: os.Getenv("GRLOG_APP_NAME"),
  81. }
  82. return c
  83. }
  84. var adatperDropMapper = map[Adapter]func(l *Logger) error{
  85. AdapterAliLs: func(l *Logger) error {
  86. return l.BeeLogger.DelLogger(logs.AdapterAliLS)
  87. },
  88. AdapterFile: func(l *Logger) error {
  89. return l.BeeLogger.DelLogger(logs.AdapterFile)
  90. },
  91. AdapterConsole: func(l *Logger) error {
  92. return l.BeeLogger.DelLogger(logs.AdapterConsole)
  93. },
  94. AdapterElasticSearch: func(l *Logger) error {
  95. return l.BeeLogger.DelLogger(logs.AdapterEs)
  96. },
  97. }
  98. func formatLog(f interface{}, v ...interface{}) string {
  99. var msg string
  100. switch f.(type) {
  101. case string:
  102. msg = f.(string)
  103. if len(v) == 0 {
  104. return msg
  105. }
  106. if strings.Contains(msg, "%") && !strings.Contains(msg, "%%") {
  107. //format string
  108. } else {
  109. //do not contain format char
  110. msg += strings.Repeat(" %v", len(v))
  111. }
  112. default:
  113. msg = fmt.Sprint(f)
  114. if len(v) == 0 {
  115. return msg
  116. }
  117. msg += strings.Repeat(" %v", len(v))
  118. }
  119. return fmt.Sprintf(msg, v...)
  120. }