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