@@ -276,7 +276,7 @@ func TestLazyLogEntriesFilter(t *testing.T) {
276276
277277 logEntries , logEntry := createEntries (t )
278278
279- filtered , err := logEntries .Filter (term )
279+ filtered , err := logEntries .Filter (term , "" , nil )
280280 require .NoError (t , err )
281281
282282 if assert .Len (t , filtered .Entries , 1 ) {
@@ -289,7 +289,7 @@ func TestLazyLogEntriesFilter(t *testing.T) {
289289
290290 logEntries , logEntry := createEntries (t )
291291
292- filtered , err := logEntries .Filter (strings .ToUpper (term ))
292+ filtered , err := logEntries .Filter (strings .ToUpper (term ), "" , nil )
293293 require .NoError (t , err )
294294
295295 if assert .Len (t , filtered .Entries , 1 ) {
@@ -302,7 +302,7 @@ func TestLazyLogEntriesFilter(t *testing.T) {
302302
303303 logEntries , _ := createEntries (t )
304304
305- filtered , err := logEntries .Filter ("" )
305+ filtered , err := logEntries .Filter ("" , "" , nil )
306306 require .NoError (t , err )
307307 assert .Len (t , filtered .Entries , logEntries .Len ())
308308 })
@@ -312,7 +312,7 @@ func TestLazyLogEntriesFilter(t *testing.T) {
312312
313313 logEntries , _ := createEntries (t )
314314
315- filtered , err := logEntries .Filter (term + " - not found!" )
315+ filtered , err := logEntries .Filter (term + " - not found!" , "" , nil )
316316 require .NoError (t , err )
317317
318318 assert .Empty (t , filtered .Entries )
@@ -331,11 +331,53 @@ func TestLazyLogEntriesFilter(t *testing.T) {
331331
332332 logEntries .Seeker = f
333333
334- _ , err = logEntries .Filter (term + " - not found!" )
334+ _ , err = logEntries .Filter (term + " - not found!" , "" , nil )
335335 require .Error (t , err )
336336 })
337337}
338338
339+ func TestLazyLogEntriesFieldFilter (t * testing.T ) {
340+ t .Parallel ()
341+
342+ const term = "info"
343+
344+ const logs = `
345+ {"level":"info","time":"2025-12-16T13:20:00-05:00","message":"2025-12-16 13:20:00.049 Day1| Ana went home!"}
346+ {"level":"debug","time":"2025-12-16T13:20:00-05:00","message":"2025-12-16 13:21:00.049 Day2| Tom was daydreaming"}
347+ {"level":"error","time":"2025-12-16T13:20:00-05:00","message":"2025-12-16 13:22:00.049 Day3| Can't wait to be weekend!"}
348+ `
349+
350+ defaultConfig := config .GetDefaultConfig ()
351+
352+ createEntries := func (tb testing.TB ) (source.LazyLogEntries , source.LazyLogEntry ) {
353+ tb .Helper ()
354+ source , err := source .Reader (bytes .NewReader ([]byte (logs )), defaultConfig )
355+ require .NoError (tb , err )
356+
357+ tb .Cleanup (func () { assert .NoError (tb , source .Close ()) })
358+
359+ logEntries , err := source .ParseLogEntries ()
360+ require .NoError (tb , err )
361+
362+ logEntry := logEntries .Entries [0 ]
363+
364+ return logEntries , logEntry
365+ }
366+
367+ t .Run ("found_exact" , func (t * testing.T ) {
368+ t .Parallel ()
369+
370+ logEntries , logEntry := createEntries (t )
371+
372+ filtered , err := logEntries .Filter (term , "level" , defaultConfig )
373+ require .NoError (t , err )
374+
375+ if assert .Len (t , filtered .Entries , 1 ) {
376+ assert .Equal (t , logEntry , filtered .Entries [0 ])
377+ }
378+ })
379+ }
380+
339381func TestSecondTimeFormatting (t * testing.T ) {
340382 t .Parallel ()
341383
0 commit comments