logger.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  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 ParseLevel(s string) (lv int) {
  49. lv = DebugLevel
  50. s = strings.ToUpper(s)
  51. for k, v := range lvText {
  52. if s == v {
  53. lv = k
  54. return
  55. }
  56. }
  57. return
  58. }
  59. func ParseLevelWithoutDefault(s string) (lv int) {
  60. lv = -1
  61. s = strings.ToUpper(s)
  62. for k, v := range lvText {
  63. if s == v {
  64. lv = k
  65. return
  66. }
  67. }
  68. return
  69. }