//Dstl (c) Crown Copyright 2017 package uk.gov.dstl.baleen.core.logging.builders; import java.util.List; import ch.qos.logback.classic.LoggerContext; import ch.qos.logback.classic.spi.ILoggingEvent; import ch.qos.logback.core.Appender; import ch.qos.logback.core.encoder.Encoder; import ch.qos.logback.core.filter.Filter; /** * Create an in memory holder and appender for log events, of type * {@link EvictingQueueAppender}. * * Note that this builder will return the same instance for each call to * createAppender * * * */ public class EvictingQueueBuilder extends AbstractBaleenLoggerBuilder { private static final String NAME = "evicting"; private final EvictingQueueAppender<ILoggingEvent> appender; /** * New instances * * @param pattern * as per {@link AbstractBaleenLoggerBuilder} * @param filters * as per {@link AbstractBaleenLoggerBuilder} * @param maxSize * the maximum number of log events to store in memory. */ public EvictingQueueBuilder(String pattern, List<Filter<ILoggingEvent>> filters, int maxSize) { super(NAME, pattern, filters); this.appender = new EvictingQueueAppender<ILoggingEvent>(maxSize); } /** * Get the appender which has been created. * * @return the appender */ public EvictingQueueAppender<ILoggingEvent> getAppender() { return appender; } @Override protected Appender<ILoggingEvent> createAppender(LoggerContext context, Encoder<ILoggingEvent> encoder) { return appender; } }