You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

console_test.go 3.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. // Copyright 2019 The Gitea Authors. All rights reserved.
  2. // Use of this source code is governed by a MIT-style
  3. // license that can be found in the LICENSE file.
  4. package log
  5. import (
  6. "fmt"
  7. "strings"
  8. "testing"
  9. "time"
  10. "github.com/stretchr/testify/assert"
  11. )
  12. func TestConsoleLoggerBadConfig(t *testing.T) {
  13. logger := NewConsoleLogger()
  14. err := logger.Init("{")
  15. assert.Error(t, err)
  16. assert.Contains(t, err.Error(), "Unable to parse JSON")
  17. logger.Close()
  18. }
  19. func TestConsoleLoggerMinimalConfig(t *testing.T) {
  20. for _, level := range Levels() {
  21. var written []byte
  22. var closed bool
  23. c := CallbackWriteCloser{
  24. callback: func(p []byte, close bool) {
  25. written = p
  26. closed = close
  27. },
  28. }
  29. prefix := ""
  30. flags := LstdFlags
  31. cw := NewConsoleLogger()
  32. realCW := cw.(*ConsoleLogger)
  33. cw.Init(fmt.Sprintf("{\"level\":\"%s\"}", level))
  34. nwc := realCW.out.(*nopWriteCloser)
  35. nwc.w = c
  36. assert.Equal(t, flags, realCW.Flags)
  37. assert.Equal(t, FromString(level), realCW.Level)
  38. assert.Equal(t, FromString(level), cw.GetLevel())
  39. assert.Equal(t, prefix, realCW.Prefix)
  40. assert.Equal(t, "", string(written))
  41. cw.Close()
  42. assert.False(t, closed)
  43. }
  44. }
  45. func TestConsoleLogger(t *testing.T) {
  46. var written []byte
  47. var closed bool
  48. c := CallbackWriteCloser{
  49. callback: func(p []byte, close bool) {
  50. written = p
  51. closed = close
  52. },
  53. }
  54. prefix := "TestPrefix "
  55. level := INFO
  56. flags := LstdFlags | LUTC | Lfuncname
  57. cw := NewConsoleLogger()
  58. realCW := cw.(*ConsoleLogger)
  59. realCW.Colorize = false
  60. nwc := realCW.out.(*nopWriteCloser)
  61. nwc.w = c
  62. cw.Init(fmt.Sprintf("{\"expression\":\"FILENAME\",\"prefix\":\"%s\",\"level\":\"%s\",\"flags\":%d}", prefix, level.String(), flags))
  63. assert.Equal(t, flags, realCW.Flags)
  64. assert.Equal(t, level, realCW.Level)
  65. assert.Equal(t, level, cw.GetLevel())
  66. location, _ := time.LoadLocation("EST")
  67. date := time.Date(2019, time.January, 13, 22, 3, 30, 15, location)
  68. dateString := date.UTC().Format("2006/01/02 15:04:05")
  69. event := Event{
  70. level: INFO,
  71. msg: "TEST MSG",
  72. caller: "CALLER",
  73. filename: "FULL/FILENAME",
  74. line: 1,
  75. time: date,
  76. }
  77. expected := fmt.Sprintf("%s%s %s:%d:%s [%c] %s\n", prefix, dateString, event.filename, event.line, event.caller, strings.ToUpper(event.level.String())[0], event.msg)
  78. cw.LogEvent(&event)
  79. assert.Equal(t, expected, string(written))
  80. assert.False(t, closed)
  81. written = written[:0]
  82. event.level = DEBUG
  83. expected = ""
  84. cw.LogEvent(&event)
  85. assert.Equal(t, expected, string(written))
  86. assert.False(t, closed)
  87. event.level = TRACE
  88. expected = ""
  89. cw.LogEvent(&event)
  90. assert.Equal(t, expected, string(written))
  91. assert.False(t, closed)
  92. nonMatchEvent := Event{
  93. level: INFO,
  94. msg: "TEST MSG",
  95. caller: "CALLER",
  96. filename: "FULL/FI_LENAME",
  97. line: 1,
  98. time: date,
  99. }
  100. event.level = INFO
  101. expected = ""
  102. cw.LogEvent(&nonMatchEvent)
  103. assert.Equal(t, expected, string(written))
  104. assert.False(t, closed)
  105. event.level = WARN
  106. expected = fmt.Sprintf("%s%s %s:%d:%s [%c] %s\n", prefix, dateString, event.filename, event.line, event.caller, strings.ToUpper(event.level.String())[0], event.msg)
  107. cw.LogEvent(&event)
  108. assert.Equal(t, expected, string(written))
  109. assert.False(t, closed)
  110. written = written[:0]
  111. cw.Close()
  112. assert.False(t, closed)
  113. }