logs_test.go 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. package logc
  2. import (
  3. "bytes"
  4. "context"
  5. "encoding/json"
  6. "fmt"
  7. "runtime"
  8. "strings"
  9. "testing"
  10. "github.com/stretchr/testify/assert"
  11. "github.com/zeromicro/go-zero/core/logx"
  12. )
  13. func TestAddGlobalFields(t *testing.T) {
  14. var buf bytes.Buffer
  15. writer := logx.NewWriter(&buf)
  16. old := logx.Reset()
  17. logx.SetWriter(writer)
  18. defer logx.SetWriter(old)
  19. Info(context.Background(), "hello")
  20. buf.Reset()
  21. AddGlobalFields(Field("a", "1"), Field("b", "2"))
  22. AddGlobalFields(Field("c", "3"))
  23. Info(context.Background(), "world")
  24. var m map[string]any
  25. assert.NoError(t, json.Unmarshal(buf.Bytes(), &m))
  26. assert.Equal(t, "1", m["a"])
  27. assert.Equal(t, "2", m["b"])
  28. assert.Equal(t, "3", m["c"])
  29. }
  30. func TestAlert(t *testing.T) {
  31. var buf strings.Builder
  32. writer := logx.NewWriter(&buf)
  33. old := logx.Reset()
  34. logx.SetWriter(writer)
  35. defer logx.SetWriter(old)
  36. Alert(context.Background(), "foo")
  37. assert.True(t, strings.Contains(buf.String(), "foo"), buf.String())
  38. }
  39. func TestError(t *testing.T) {
  40. var buf strings.Builder
  41. writer := logx.NewWriter(&buf)
  42. old := logx.Reset()
  43. logx.SetWriter(writer)
  44. defer logx.SetWriter(old)
  45. file, line := getFileLine()
  46. Error(context.Background(), "foo")
  47. assert.True(t, strings.Contains(buf.String(), fmt.Sprintf("%s:%d", file, line+1)))
  48. }
  49. func TestErrorf(t *testing.T) {
  50. var buf strings.Builder
  51. writer := logx.NewWriter(&buf)
  52. old := logx.Reset()
  53. logx.SetWriter(writer)
  54. defer logx.SetWriter(old)
  55. file, line := getFileLine()
  56. Errorf(context.Background(), "foo %s", "bar")
  57. assert.True(t, strings.Contains(buf.String(), fmt.Sprintf("%s:%d", file, line+1)))
  58. }
  59. func TestErrorv(t *testing.T) {
  60. var buf strings.Builder
  61. writer := logx.NewWriter(&buf)
  62. old := logx.Reset()
  63. logx.SetWriter(writer)
  64. defer logx.SetWriter(old)
  65. file, line := getFileLine()
  66. Errorv(context.Background(), "foo")
  67. assert.True(t, strings.Contains(buf.String(), fmt.Sprintf("%s:%d", file, line+1)))
  68. }
  69. func TestErrorw(t *testing.T) {
  70. var buf strings.Builder
  71. writer := logx.NewWriter(&buf)
  72. old := logx.Reset()
  73. logx.SetWriter(writer)
  74. defer logx.SetWriter(old)
  75. file, line := getFileLine()
  76. Errorw(context.Background(), "foo", Field("a", "b"))
  77. assert.True(t, strings.Contains(buf.String(), fmt.Sprintf("%s:%d", file, line+1)))
  78. }
  79. func TestInfo(t *testing.T) {
  80. var buf strings.Builder
  81. writer := logx.NewWriter(&buf)
  82. old := logx.Reset()
  83. logx.SetWriter(writer)
  84. defer logx.SetWriter(old)
  85. file, line := getFileLine()
  86. Info(context.Background(), "foo")
  87. assert.True(t, strings.Contains(buf.String(), fmt.Sprintf("%s:%d", file, line+1)))
  88. }
  89. func TestInfof(t *testing.T) {
  90. var buf strings.Builder
  91. writer := logx.NewWriter(&buf)
  92. old := logx.Reset()
  93. logx.SetWriter(writer)
  94. defer logx.SetWriter(old)
  95. file, line := getFileLine()
  96. Infof(context.Background(), "foo %s", "bar")
  97. assert.True(t, strings.Contains(buf.String(), fmt.Sprintf("%s:%d", file, line+1)))
  98. }
  99. func TestInfov(t *testing.T) {
  100. var buf strings.Builder
  101. writer := logx.NewWriter(&buf)
  102. old := logx.Reset()
  103. logx.SetWriter(writer)
  104. defer logx.SetWriter(old)
  105. file, line := getFileLine()
  106. Infov(context.Background(), "foo")
  107. assert.True(t, strings.Contains(buf.String(), fmt.Sprintf("%s:%d", file, line+1)))
  108. }
  109. func TestInfow(t *testing.T) {
  110. var buf strings.Builder
  111. writer := logx.NewWriter(&buf)
  112. old := logx.Reset()
  113. logx.SetWriter(writer)
  114. defer logx.SetWriter(old)
  115. file, line := getFileLine()
  116. Infow(context.Background(), "foo", Field("a", "b"))
  117. assert.True(t, strings.Contains(buf.String(), fmt.Sprintf("%s:%d", file, line+1)))
  118. }
  119. func TestMust(t *testing.T) {
  120. assert.NotPanics(t, func() {
  121. Must(nil)
  122. })
  123. assert.NotPanics(t, func() {
  124. MustSetup(LogConf{})
  125. })
  126. }
  127. func TestMisc(t *testing.T) {
  128. SetLevel(logx.DebugLevel)
  129. assert.NoError(t, SetUp(LogConf{}))
  130. assert.NoError(t, Close())
  131. }
  132. func TestSlow(t *testing.T) {
  133. var buf strings.Builder
  134. writer := logx.NewWriter(&buf)
  135. old := logx.Reset()
  136. logx.SetWriter(writer)
  137. defer logx.SetWriter(old)
  138. file, line := getFileLine()
  139. Slow(context.Background(), "foo")
  140. assert.True(t, strings.Contains(buf.String(), fmt.Sprintf("%s:%d", file, line+1)), buf.String())
  141. }
  142. func TestSlowf(t *testing.T) {
  143. var buf strings.Builder
  144. writer := logx.NewWriter(&buf)
  145. old := logx.Reset()
  146. logx.SetWriter(writer)
  147. defer logx.SetWriter(old)
  148. file, line := getFileLine()
  149. Slowf(context.Background(), "foo %s", "bar")
  150. assert.True(t, strings.Contains(buf.String(), fmt.Sprintf("%s:%d", file, line+1)), buf.String())
  151. }
  152. func TestSlowv(t *testing.T) {
  153. var buf strings.Builder
  154. writer := logx.NewWriter(&buf)
  155. old := logx.Reset()
  156. logx.SetWriter(writer)
  157. defer logx.SetWriter(old)
  158. file, line := getFileLine()
  159. Slowv(context.Background(), "foo")
  160. assert.True(t, strings.Contains(buf.String(), fmt.Sprintf("%s:%d", file, line+1)), buf.String())
  161. }
  162. func TestSloww(t *testing.T) {
  163. var buf strings.Builder
  164. writer := logx.NewWriter(&buf)
  165. old := logx.Reset()
  166. logx.SetWriter(writer)
  167. defer logx.SetWriter(old)
  168. file, line := getFileLine()
  169. Sloww(context.Background(), "foo", Field("a", "b"))
  170. assert.True(t, strings.Contains(buf.String(), fmt.Sprintf("%s:%d", file, line+1)), buf.String())
  171. }
  172. func getFileLine() (string, int) {
  173. _, file, line, _ := runtime.Caller(1)
  174. short := file
  175. for i := len(file) - 1; i > 0; i-- {
  176. if file[i] == '/' {
  177. short = file[i+1:]
  178. break
  179. }
  180. }
  181. return short, line
  182. }