logger.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package log
  2. import "strings"
  3. const (
  4. TraceLevel int = iota + 1
  5. DebugLevel
  6. InfoLevel
  7. WarnLevel
  8. ErrorLevel
  9. FatalLevel
  10. PanicLevel
  11. )
  12. var (
  13. lvText = map[int]string{
  14. TraceLevel: "TRACE",
  15. DebugLevel: "DEBUG",
  16. InfoLevel: "INFO",
  17. WarnLevel: "WARN",
  18. ErrorLevel: "ERROR",
  19. FatalLevel: "FATAL",
  20. PanicLevel: "PANIC",
  21. }
  22. )
  23. type Logger interface {
  24. SetLevel(int)
  25. Prefix(string)
  26. Print(i ...interface{})
  27. Printf(format string, args ...interface{})
  28. Debug(i ...interface{})
  29. Debugf(format string, args ...interface{})
  30. Info(i ...interface{})
  31. Infof(format string, args ...interface{})
  32. Warn(i ...interface{})
  33. Warnf(format string, args ...interface{})
  34. Error(i ...interface{})
  35. Errorf(format string, args ...interface{})
  36. Fatal(i ...interface{})
  37. Fatalf(format string, args ...interface{})
  38. Panic(i ...interface{})
  39. Panicf(format string, args ...interface{})
  40. }
  41. func getLevelText(lv int) string {
  42. if s, ok := lvText[lv]; ok {
  43. return s
  44. } else {
  45. return "TRACE"
  46. }
  47. }
  48. func FormatLevel(lv int) string {
  49. return getLevelText(lv)
  50. }
  51. func ParseLevel(s string) (lv int) {
  52. lv = DebugLevel
  53. s = strings.ToUpper(s)
  54. for k, v := range lvText {
  55. if s == v {
  56. lv = k
  57. return
  58. }
  59. }
  60. return
  61. }
  62. func ParseLevelWithoutDefault(s string) (lv int) {
  63. lv = -1
  64. s = strings.ToUpper(s)
  65. for k, v := range lvText {
  66. if s == v {
  67. lv = k
  68. return
  69. }
  70. }
  71. return
  72. }