Entries returns a copy of the captured entries. If filters are provided, only entries matching ALL filters are returned. This lets callers compose simple predicates instead of needing dedicated methods for each field.
(filters ...func(slog.SinkEntry) bool)
| 49 | // lets callers compose simple predicates instead of needing |
| 50 | // dedicated methods for each field. |
| 51 | func (s *FakeSink) Entries(filters ...func(slog.SinkEntry) bool) []slog.SinkEntry { |
| 52 | s.mu.RLock() |
| 53 | cpy := make([]slog.SinkEntry, len(s.entries)) |
| 54 | copy(cpy, s.entries) |
| 55 | s.mu.RUnlock() |
| 56 | filtered := make([]slog.SinkEntry, 0) |
| 57 | for _, e := range cpy { |
| 58 | if !matchAll(e, filters) { |
| 59 | continue |
| 60 | } |
| 61 | filtered = append(filtered, e) |
| 62 | } |
| 63 | return filtered |
| 64 | } |
| 65 | |
| 66 | // Logger returns a slog.Logger backed by this sink at the given |
| 67 | // level. If no level is provided it defaults to LevelDebug, which |