//Dstl (c) Crown Copyright 2017
package uk.gov.dstl.baleen.testing.logging;
import java.util.LinkedList;
import java.util.List;
import java.util.stream.Stream;
import ch.qos.logback.core.AppenderBase;
/**
* Collects log events in memory, only for use in debugging.
*
* Specifically not threadsafe/multithread capable.
*
*
*
* @param <Event>
*/
public class InMemoryAppender<E> extends AppenderBase<E> {
private final List<E> events = new LinkedList<>();
/**
* New instance.
*
*/
public InMemoryAppender() {
// Do nothing
}
@Override
protected void append(E event) {
events.add(event);
}
/**
* Clear the events.
*
*/
public void clear() {
events.clear();
}
/**
* Get all events.
*
* @return
*/
public List<E> getAll() {
return events;
}
/**
* Get a stream of the events.
*
*
* @return
*/
public Stream<E> stream() {
return events.stream();
}
/**
* Get the size of events.
*
* @return
*/
public int size() {
return events.size();
}
}