console.go 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. package log
  2. import (
  3. "fmt"
  4. "git.nspix.com/golang/kos/util/env"
  5. "strconv"
  6. "time"
  7. )
  8. const (
  9. FG_BLACK int = 30
  10. FG_RED = 31
  11. FG_GREEN = 32
  12. FG_YELLOW = 33
  13. FG_BLUE = 34
  14. FG_PURPLE = 35
  15. FG_CYAN = 36
  16. FG_GREY = 37
  17. )
  18. var (
  19. levelColor = map[int]int{
  20. TraceLevel: FG_GREY,
  21. DebugLevel: FG_BLUE,
  22. InfoLevel: FG_GREEN,
  23. WarnLevel: FG_PURPLE,
  24. ErrorLevel: FG_RED,
  25. FatalLevel: FG_RED,
  26. PanicLevel: FG_RED,
  27. }
  28. )
  29. type Console struct {
  30. Level int
  31. DisableColor bool
  32. DisableTime bool
  33. prefix string
  34. }
  35. func (log *Console) SetLevel(lv int) {
  36. log.Level = lv
  37. }
  38. func (log *Console) Prefix(s string) {
  39. log.prefix = s
  40. }
  41. func (log *Console) Print(i ...interface{}) {
  42. log.write(TraceLevel, fmt.Sprint(i...))
  43. }
  44. func (log *Console) Printf(format string, args ...interface{}) {
  45. log.write(TraceLevel, fmt.Sprintf(format, args...))
  46. }
  47. func (log *Console) Debug(i ...interface{}) {
  48. log.write(DebugLevel, fmt.Sprint(i...))
  49. }
  50. func (log *Console) Debugf(format string, args ...interface{}) {
  51. log.write(DebugLevel, fmt.Sprintf(format, args...))
  52. }
  53. func (log *Console) Info(i ...interface{}) {
  54. log.write(InfoLevel, fmt.Sprint(i...))
  55. }
  56. func (log *Console) Infof(format string, args ...interface{}) {
  57. log.write(InfoLevel, fmt.Sprintf(format, args...))
  58. }
  59. func (log *Console) Warn(i ...interface{}) {
  60. log.write(WarnLevel, fmt.Sprint(i...))
  61. }
  62. func (log *Console) Warnf(format string, args ...interface{}) {
  63. log.write(WarnLevel, fmt.Sprintf(format, args...))
  64. }
  65. func (log *Console) Error(i ...interface{}) {
  66. log.write(ErrorLevel, fmt.Sprint(i...))
  67. }
  68. func (log *Console) Errorf(format string, args ...interface{}) {
  69. log.write(ErrorLevel, fmt.Sprintf(format, args...))
  70. }
  71. func (log *Console) Fatal(i ...interface{}) {
  72. log.write(FatalLevel, fmt.Sprint(i...))
  73. }
  74. func (log *Console) Fatalf(format string, args ...interface{}) {
  75. log.write(FatalLevel, fmt.Sprintf(format, args...))
  76. }
  77. func (log *Console) Panic(i ...interface{}) {
  78. log.write(PanicLevel, fmt.Sprint(i...))
  79. }
  80. func (log *Console) Panicf(format string, args ...interface{}) {
  81. log.write(PanicLevel, fmt.Sprintf(format, args...))
  82. }
  83. func (log *Console) write(level int, s string) {
  84. var ls string
  85. if log.Level > level {
  86. return
  87. }
  88. if log.DisableColor {
  89. ls = getLevelText(level)
  90. } else {
  91. ls = fmt.Sprintf("\033[0m\033[%dm[%s]\033[0m", levelColor[level], getLevelText(level))
  92. }
  93. if log.prefix != "" {
  94. ls += " [" + log.prefix + "]"
  95. }
  96. if log.DisableTime {
  97. fmt.Println(ls + " " + s)
  98. } else {
  99. fmt.Println(time.Now().Format("2006-01-02 15:04:05") + " " + ls + " " + s)
  100. }
  101. }
  102. func NewConsoleLogger() *Console {
  103. lg := &Console{}
  104. lg.DisableColor, _ = strconv.ParseBool(env.Get("VOX_DISABLE_LOG_COLOR", "false"))
  105. lg.DisableTime, _ = strconv.ParseBool(env.Get("VOX_DISABLE_LOG_DATETIME", "false"))
  106. return lg
  107. }