You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

logging.go 3.7 kB

5 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. package logging
  2. import (
  3. "fmt"
  4. "log"
  5. "os"
  6. )
  7. // Level represents the level of logging.
  8. type LogLevel uint8
  9. const (
  10. Debug LogLevel = iota
  11. Info
  12. Warn
  13. Error
  14. Fatal
  15. Panic
  16. )
  17. type ILogger interface {
  18. Debug(v ...interface{})
  19. Debugf(format string, v ...interface{})
  20. Info(v ...interface{})
  21. Infof(format string, v ...interface{})
  22. Warn(v ...interface{})
  23. Warnf(format string, v ...interface{})
  24. Error(v ...interface{})
  25. Errorf(format string, v ...interface{})
  26. Fatal(v ...interface{})
  27. Fatalf(format string, v ...interface{})
  28. Panic(v ...interface{})
  29. Panicf(format string, v ...interface{})
  30. }
  31. const (
  32. DefaultLogLevel = Info
  33. DefaultNamespace = "default"
  34. )
  35. type SeataLogger struct {
  36. loggers []*log.Logger
  37. namespace string
  38. logLevel LogLevel
  39. }
  40. var Logger *SeataLogger
  41. func init() {
  42. var loggers = make([]*log.Logger, 0)
  43. loggers = append(loggers, log.New(os.Stdout, "", log.LstdFlags))
  44. Logger = &SeataLogger{
  45. loggers: loggers,
  46. namespace: DefaultNamespace,
  47. logLevel: DefaultLogLevel,
  48. }
  49. }
  50. func merge(namespace, logLevel, msg string) string {
  51. return fmt.Sprintf("%s %s %s", namespace, logLevel, msg)
  52. }
  53. func SetNamespace(namespace string) {
  54. Logger.namespace = namespace
  55. }
  56. func SetLogLevel(logLevel LogLevel) {
  57. Logger.logLevel = logLevel
  58. }
  59. func AddLogger(logger *log.Logger) {
  60. Logger.loggers = append(Logger.loggers, logger)
  61. }
  62. func (l *SeataLogger) Debug(v ...interface{}) {
  63. if Debug < l.logLevel || len(v) == 0 {
  64. return
  65. }
  66. for _,log := range l.loggers {
  67. log.Print(merge(l.namespace, "DEBUG", fmt.Sprint(v...)))
  68. }
  69. }
  70. func (l *SeataLogger) Debugf(format string, v ...interface{}) {
  71. if Debug < l.logLevel {
  72. return
  73. }
  74. for _,log := range l.loggers {
  75. log.Print(merge(l.namespace, "DEBUG", fmt.Sprintf(format, v...)))
  76. }
  77. }
  78. func (l *SeataLogger) Info(v ...interface{}) {
  79. if Info < l.logLevel {
  80. return
  81. }
  82. for _,log := range l.loggers {
  83. log.Print(merge(l.namespace, "INFO", fmt.Sprint(v...)))
  84. }
  85. }
  86. func (l *SeataLogger) Infof(format string, v ...interface{}) {
  87. if Info < l.logLevel {
  88. return
  89. }
  90. for _,log := range l.loggers {
  91. log.Print(merge(l.namespace, "INFO", fmt.Sprintf(format, v...)))
  92. }
  93. }
  94. func (l *SeataLogger) Warn(v ...interface{}) {
  95. if Warn < l.logLevel {
  96. return
  97. }
  98. for _,log := range l.loggers {
  99. log.Print(merge(l.namespace, "WARNING", fmt.Sprint(v...)))
  100. }
  101. }
  102. func (l *SeataLogger) Warnf(format string, v ...interface{}) {
  103. if Warn < l.logLevel {
  104. return
  105. }
  106. for _,log := range l.loggers {
  107. log.Print(merge(l.namespace, "WARNING", fmt.Sprintf(format, v...)))
  108. }
  109. }
  110. func (l *SeataLogger) Error(v ...interface{}) {
  111. if Error < l.logLevel {
  112. return
  113. }
  114. for _,log := range l.loggers {
  115. log.Print(merge(l.namespace, "ERROR", fmt.Sprint(v...)))
  116. }
  117. }
  118. func (l *SeataLogger) Errorf(format string, v ...interface{}) {
  119. if Error < l.logLevel {
  120. return
  121. }
  122. for _,log := range l.loggers {
  123. log.Print(merge(l.namespace, "ERROR", fmt.Sprintf(format, v...)))
  124. }
  125. }
  126. func (l *SeataLogger) Fatal(v ...interface{}) {
  127. if Fatal < l.logLevel {
  128. return
  129. }
  130. for _,log := range l.loggers {
  131. log.Print(merge(l.namespace, "FATAL", fmt.Sprint(v...)))
  132. }
  133. }
  134. func (l *SeataLogger) Fatalf(format string, v ...interface{}) {
  135. if Fatal < l.logLevel {
  136. return
  137. }
  138. for _,log := range l.loggers {
  139. log.Print(merge(l.namespace, "FATAL", fmt.Sprintf(format, v...)))
  140. }
  141. }
  142. func (l *SeataLogger) Panic(v ...interface{}) {
  143. if Panic < l.logLevel {
  144. return
  145. }
  146. for _,log := range l.loggers {
  147. log.Print(merge(l.namespace, "PANIC", fmt.Sprint(v...)))
  148. }
  149. }
  150. func (l *SeataLogger) Panicf(format string, v ...interface{}) {
  151. if Panic < l.logLevel {
  152. return
  153. }
  154. for _,log := range l.loggers {
  155. log.Print(merge(l.namespace, "PANIC", fmt.Sprintf(format, v...)))
  156. }
  157. }

Go Implementation For Seata