console.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. // Copyright 2016 The G3N Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style
  3. // license that can be found in the LICENSE file.
  4. package logger
  5. import (
  6. "os"
  7. )
  8. // Ansi terminal color codes
  9. const (
  10. csi = "\x1B["
  11. black = "30m"
  12. red = "31m"
  13. green = "32m"
  14. yellow = "33m"
  15. blue = "34m"
  16. magenta = "35m"
  17. cyan = "36m"
  18. white = "37m"
  19. bblack = "30m"
  20. bred = "31;1m"
  21. bgreen = "32;1m"
  22. byellow = "33;1m"
  23. bblue = "34;1m"
  24. bmagenta = "35;1m"
  25. bcyan = "36;1m"
  26. bwhite = "37;1m"
  27. )
  28. // Maps log level to color sequence
  29. var colorMap = map[int]string{
  30. DEBUG: white,
  31. INFO: green,
  32. WARN: byellow,
  33. ERROR: bred,
  34. FATAL: bmagenta,
  35. }
  36. // logger Console writer type
  37. type Console struct {
  38. writer *os.File
  39. color bool
  40. }
  41. // NewConsole creates and returns a new logger Console writer
  42. // If color is true, this writer uses Ansi codes to write
  43. // log messages in color accordingly to its level.
  44. func NewConsole(color bool) *Console {
  45. return &Console{os.Stdout, color}
  46. }
  47. func (w *Console) Write(event *Event) {
  48. if w.color {
  49. w.writer.Write([]byte(csi))
  50. w.writer.Write([]byte(colorMap[event.level]))
  51. }
  52. w.writer.Write([]byte(event.fmsg))
  53. if w.color {
  54. w.writer.Write([]byte(csi))
  55. w.writer.Write([]byte(white))
  56. }
  57. }
  58. func (w *Console) Close() {
  59. }
  60. func (w *Console) Sync() {
  61. }