diff --git a/src/main/java/nl/altindag/log/LogCaptor.java b/src/main/java/nl/altindag/log/LogCaptor.java index 1bf063c..0018e24 100644 --- a/src/main/java/nl/altindag/log/LogCaptor.java +++ b/src/main/java/nl/altindag/log/LogCaptor.java @@ -24,6 +24,7 @@ import nl.altindag.log.appender.InMemoryAppender; import nl.altindag.log.model.LogEvent; import nl.altindag.log.util.JavaUtilLoggingLoggerUtils; +import nl.altindag.log.util.Mappers; import nl.altindag.log.util.ValidationUtils; import org.slf4j.LoggerFactory; @@ -33,10 +34,10 @@ import java.util.List; import java.util.Map; import java.util.Optional; +import java.util.function.Function; +import java.util.function.Predicate; +import java.util.stream.Collectors; -import static java.util.stream.Collectors.collectingAndThen; -import static java.util.stream.Collectors.toList; -import static nl.altindag.log.util.Mappers.toLogEvent; import static org.slf4j.Logger.ROOT_LOGGER_NAME; /** @@ -93,11 +94,7 @@ public static LogCaptor forName(String name) { } public List getLogs() { - synchronized (eventsCollector) { - return eventsCollector.stream() - .map(ILoggingEvent::getFormattedMessage) - .collect(collectingAndThen(toList(), Collections::unmodifiableList)); - } + return getLogs(logEvent -> true, ILoggingEvent::getFormattedMessage); } public List getInfoLogs() { @@ -121,19 +118,19 @@ public List getTraceLogs() { } private List getLogs(Level level) { - synchronized (eventsCollector) { - return eventsCollector.stream() - .filter(logEvent -> logEvent.getLevel() == level) - .map(ILoggingEvent::getFormattedMessage) - .collect(collectingAndThen(toList(), Collections::unmodifiableList)); - } + return getLogs(logEvent -> logEvent.getLevel() == level, ILoggingEvent::getFormattedMessage); } public List getLogEvents() { + return getLogs(logEvent -> true, Mappers.toLogEvent()); + } + + private List getLogs(Predicate logEventPredicate, Function logEventMapper) { synchronized (eventsCollector) { return eventsCollector.stream() - .map(toLogEvent()) - .collect(collectingAndThen(toList(), Collections::unmodifiableList)); + .filter(logEventPredicate) + .map(logEventMapper) + .collect(Collectors.collectingAndThen(Collectors.toList(), Collections::unmodifiableList)); } }