console.go 2.5 KB

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