@@ -38,10 +38,28 @@ func fillZerologTestFields(t *testing.T, format string) string {
38
38
return fmt .Sprintf (format , zeroTime .Format (zerolog .TimeFieldFormat ), t .Name ())
39
39
}
40
40
41
+ func fillZerologSubloggerTestFields (t * testing.T , format string , depth int ) string {
42
+ args := make ([]interface {}, 0 , depth + 2 )
43
+ args = append (args , zeroTime .Format (zerolog .TimeFieldFormat ), t .Name ())
44
+ for i := 0 ; i < depth ; i ++ {
45
+ args = append (args , t .Name ())
46
+ }
47
+ return fmt .Sprintf (format , args ... )
48
+ }
49
+
41
50
func fillSlogTestFields (t * testing.T , format string ) string {
42
51
return fmt .Sprintf (format , t .Name ())
43
52
}
44
53
54
+ func fillSlogSubloggerTestFields (t * testing.T , format string , depth int ) string {
55
+ args := make ([]interface {}, 0 , depth + 1 )
56
+ args = append (args , t .Name ())
57
+ for i := 0 ; i < depth ; i ++ {
58
+ args = append (args , t .Name ())
59
+ }
60
+ return fmt .Sprintf (format , args ... )
61
+ }
62
+
45
63
func TestInfo (t * testing.T ) {
46
64
t .Run ("empty" , func (t * testing.T ) {
47
65
t .Run ("noop" , func (t * testing.T ) {
@@ -199,3 +217,144 @@ func TestInfo(t *testing.T) {
199
217
})
200
218
})
201
219
}
220
+
221
+ func TestSubLoggers (t * testing.T ) {
222
+ t .Run ("depth=1" , func (t * testing.T ) {
223
+ t .Run ("zerolog" , func (t * testing.T ) {
224
+ out := & bytes.Buffer {}
225
+ log := New (Zerolog , t .Name (), out )
226
+ sublogger := log .SubLogger (t .Name ())
227
+ sublogger .Info ().Str ("foo" , "bar" ).Msg ("" )
228
+ assert .Equal (t , fillZerologSubloggerTestFields (t , "{\" level\" :\" info\" ,\" time\" :\" %s\" ,\" source\" :\" %s:%s\" ,\" foo\" :\" bar\" }\n " , 1 ), out .String ())
229
+ })
230
+
231
+ t .Run ("slog" , func (t * testing.T ) {
232
+ out := & bytes.Buffer {}
233
+ log := New (Slog , t .Name (), out )
234
+ sublogger := log .SubLogger (t .Name ())
235
+ sublogger .Info ().Str ("foo" , "bar" ).Msg ("" )
236
+ assert .Equal (t , fillSlogSubloggerTestFields (t , "level=INFO msg=\" \" source=\" %s:%s\" foo=bar\n " , 1 ), out .String ())
237
+ })
238
+ })
239
+
240
+ t .Run ("depth=2" , func (t * testing.T ) {
241
+ t .Run ("zerolog" , func (t * testing.T ) {
242
+ out := & bytes.Buffer {}
243
+ log := New (Zerolog , t .Name (), out )
244
+ sublogger0 := log .SubLogger (t .Name ())
245
+ sublogger1 := sublogger0 .SubLogger (t .Name ())
246
+ sublogger1 .Info ().Str ("foo" , "bar" ).Msg ("" )
247
+ assert .Equal (t , fillZerologSubloggerTestFields (t , "{\" level\" :\" info\" ,\" time\" :\" %s\" ,\" source\" :\" %s:%s:%s\" ,\" foo\" :\" bar\" }\n " , 2 ), out .String ())
248
+ })
249
+
250
+ t .Run ("slog" , func (t * testing.T ) {
251
+ out := & bytes.Buffer {}
252
+ log := New (Slog , t .Name (), out )
253
+ sublogger0 := log .SubLogger (t .Name ())
254
+ sublogger1 := sublogger0 .SubLogger (t .Name ())
255
+ sublogger1 .Info ().Str ("foo" , "bar" ).Msg ("" )
256
+ assert .Equal (t , fillSlogSubloggerTestFields (t , "level=INFO msg=\" \" source=\" %s:%s:%s\" foo=bar\n " , 2 ), out .String ())
257
+ })
258
+ })
259
+
260
+ t .Run ("depth=3" , func (t * testing.T ) {
261
+ t .Run ("zerolog" , func (t * testing.T ) {
262
+ out := & bytes.Buffer {}
263
+ log := New (Zerolog , t .Name (), out )
264
+ sublogger0 := log .SubLogger (t .Name ())
265
+ sublogger1 := sublogger0 .SubLogger (t .Name ())
266
+ sublogger2 := sublogger1 .SubLogger (t .Name ())
267
+ sublogger2 .Info ().Str ("foo" , "bar" ).Msg ("" )
268
+ assert .Equal (t , fillZerologSubloggerTestFields (t , "{\" level\" :\" info\" ,\" time\" :\" %s\" ,\" source\" :\" %s:%s:%s:%s\" ,\" foo\" :\" bar\" }\n " , 3 ), out .String ())
269
+ })
270
+
271
+ t .Run ("slog" , func (t * testing.T ) {
272
+ out := & bytes.Buffer {}
273
+ log := New (Slog , t .Name (), out )
274
+ sublogger0 := log .SubLogger (t .Name ())
275
+ sublogger1 := sublogger0 .SubLogger (t .Name ())
276
+ sublogger2 := sublogger1 .SubLogger (t .Name ())
277
+ sublogger2 .Info ().Str ("foo" , "bar" ).Msg ("" )
278
+ assert .Equal (t , fillSlogSubloggerTestFields (t , "level=INFO msg=\" \" source=\" %s:%s:%s:%s\" foo=bar\n " , 3 ), out .String ())
279
+ })
280
+ })
281
+
282
+ t .Run ("with" , func (t * testing.T ) {
283
+
284
+ t .Run ("before-depth=1" , func (t * testing.T ) {
285
+ t .Run ("zerolog" , func (t * testing.T ) {
286
+ out := & bytes.Buffer {}
287
+ log := New (Zerolog , t .Name (), out ).With ().Str ("foo" , "bar" ).Logger ()
288
+ sublogger := log .SubLogger (t .Name ())
289
+ sublogger .Info ().Str ("foo1" , "bar1" ).Msg ("" )
290
+ assert .Equal (t , fillZerologSubloggerTestFields (t , "{\" level\" :\" info\" ,\" foo\" :\" bar\" ,\" time\" :\" %s\" ,\" source\" :\" %s:%s\" ,\" foo1\" :\" bar1\" }\n " , 1 ), out .String ())
291
+ })
292
+
293
+ t .Run ("slog" , func (t * testing.T ) {
294
+ out := & bytes.Buffer {}
295
+ log := New (Slog , t .Name (), out ).With ().Str ("foo" , "bar" ).Logger ()
296
+ sublogger := log .SubLogger (t .Name ())
297
+ sublogger .Info ().Str ("foo1" , "bar1" ).Msg ("" )
298
+ assert .Equal (t , fillSlogSubloggerTestFields (t , "level=INFO msg=\" \" source=\" %s:%s\" foo=bar foo1=bar1\n " , 1 ), out .String ())
299
+ })
300
+ })
301
+
302
+ t .Run ("before-depth=2" , func (t * testing.T ) {
303
+ t .Run ("zerolog" , func (t * testing.T ) {
304
+ out := & bytes.Buffer {}
305
+ log := New (Zerolog , t .Name (), out ).With ().Str ("foo" , "bar" ).Logger ()
306
+ sublogger0 := log .SubLogger (t .Name ())
307
+ sublogger1 := sublogger0 .SubLogger (t .Name ())
308
+ sublogger1 .Info ().Str ("foo1" , "bar1" ).Msg ("" )
309
+ assert .Equal (t , fillZerologSubloggerTestFields (t , "{\" level\" :\" info\" ,\" foo\" :\" bar\" ,\" time\" :\" %s\" ,\" source\" :\" %s:%s:%s\" ,\" foo1\" :\" bar1\" }\n " , 2 ), out .String ())
310
+ })
311
+
312
+ t .Run ("slog" , func (t * testing.T ) {
313
+ out := & bytes.Buffer {}
314
+ log := New (Slog , t .Name (), out ).With ().Str ("foo" , "bar" ).Logger ()
315
+ sublogger0 := log .SubLogger (t .Name ())
316
+ sublogger1 := sublogger0 .SubLogger (t .Name ())
317
+ sublogger1 .Info ().Str ("foo1" , "bar1" ).Msg ("" )
318
+ assert .Equal (t , fillSlogSubloggerTestFields (t , "level=INFO msg=\" \" source=\" %s:%s:%s\" foo=bar foo1=bar1\n " , 2 ), out .String ())
319
+ })
320
+ })
321
+
322
+ t .Run ("after-depth=1" , func (t * testing.T ) {
323
+ t .Run ("zerolog" , func (t * testing.T ) {
324
+ out := & bytes.Buffer {}
325
+ log := New (Zerolog , t .Name (), out )
326
+ sublogger := log .SubLogger (t .Name ()).With ().Str ("foo" , "bar" ).Logger ()
327
+ sublogger .Info ().Str ("foo1" , "bar1" ).Msg ("" )
328
+ assert .Equal (t , fillZerologSubloggerTestFields (t , "{\" level\" :\" info\" ,\" foo\" :\" bar\" ,\" time\" :\" %s\" ,\" source\" :\" %s:%s\" ,\" foo1\" :\" bar1\" }\n " , 1 ), out .String ())
329
+ })
330
+
331
+ t .Run ("slog" , func (t * testing.T ) {
332
+ out := & bytes.Buffer {}
333
+ log := New (Slog , t .Name (), out )
334
+ sublogger := log .SubLogger (t .Name ()).With ().Str ("foo" , "bar" ).Logger ()
335
+ sublogger .Info ().Str ("foo1" , "bar1" ).Msg ("" )
336
+ assert .Equal (t , fillSlogSubloggerTestFields (t , "level=INFO msg=\" \" source=\" %s:%s\" foo=bar foo1=bar1\n " , 1 ), out .String ())
337
+ })
338
+ })
339
+
340
+ t .Run ("after-depth=2" , func (t * testing.T ) {
341
+ t .Run ("zerolog" , func (t * testing.T ) {
342
+ out := & bytes.Buffer {}
343
+ log := New (Zerolog , t .Name (), out )
344
+ sublogger0 := log .SubLogger (t .Name ())
345
+ sublogger1 := sublogger0 .SubLogger (t .Name ()).With ().Str ("foo" , "bar" ).Logger ()
346
+ sublogger1 .Info ().Str ("foo1" , "bar1" ).Msg ("" )
347
+ assert .Equal (t , fillZerologSubloggerTestFields (t , "{\" level\" :\" info\" ,\" foo\" :\" bar\" ,\" time\" :\" %s\" ,\" source\" :\" %s:%s:%s\" ,\" foo1\" :\" bar1\" }\n " , 2 ), out .String ())
348
+ })
349
+
350
+ t .Run ("slog" , func (t * testing.T ) {
351
+ out := & bytes.Buffer {}
352
+ log := New (Slog , t .Name (), out )
353
+ sublogger0 := log .SubLogger (t .Name ())
354
+ sublogger1 := sublogger0 .SubLogger (t .Name ()).With ().Str ("foo" , "bar" ).Logger ()
355
+ sublogger1 .Info ().Str ("foo1" , "bar1" ).Msg ("" )
356
+ assert .Equal (t , fillSlogSubloggerTestFields (t , "level=INFO msg=\" \" source=\" %s:%s:%s\" foo=bar foo1=bar1\n " , 2 ), out .String ())
357
+ })
358
+ })
359
+ })
360
+ }
0 commit comments