protected ElasticsearchAppender(String name, Filter filter, AbstractLayout layout, boolean ignoreExceptions, BatchDelivery batchDelivery, boolean messageOnly, IndexNameFormatter indexNameFormatter) { super(name, filter, layout, ignoreExceptions); this.indexNameFormatter = indexNameFormatter; this.itemAppender = createItemAppenderFactory().createInstance(messageOnly, layout, batchDelivery); }
@Test public void appenderDelegatesToItemAppender() { // given ItemAppender itemAppender = mock(ItemAppender.class); ItemAppenderFactory itemAppenderFactory = mockedItemAppenderFactory(); when(itemAppenderFactory.createInstance(anyBoolean(), any(AbstractLayout.class), any(BatchDelivery.class))) .thenReturn(itemAppender); ElasticsearchAppender appender = createTestElasticsearchAppender(itemAppenderFactory); LogEvent logEvent = mock(LogEvent.class); // when appender.append(logEvent); // then verify(itemAppender, times(1)).append(anyString(), eq(logEvent)); }
@Override public ElasticsearchAppender build() { if (name == null) { throw new ConfigurationException("No name provided for Elasticsearch appender"); } if (batchDelivery == null) { throw new ConfigurationException("No batchDelivery [AsyncBatchDelivery] provided for Elasticsearch appender"); } if (layout == null) { layout = JacksonJsonLayout.newBuilder().build(); } return new ElasticsearchAppender(name, filter, layout, ignoreExceptions, batchDelivery, messageOnly, indexNameFormatter); }
public static Builder createTestElasticsearchAppenderBuilder() { Builder builder = ElasticsearchAppender.newBuilder() .withName(TEST_APPENDER_NAME) .withFilter(ThresholdFilter.createFilter(Level.INFO, Filter.Result.ACCEPT, Filter.Result.DENY)) .withIgnoreExceptions(false) .withBatchDelivery(mock(AsyncBatchDelivery.class)) .withMessageOnly(false); IndexNameFormatter indexNameFormatter = mock(IndexNameFormatter.class); when(indexNameFormatter.format(any(LogEvent.class))).thenReturn("testIndexName"); builder.withIndexNameFormatter(indexNameFormatter); return builder; }
@Test public void appenderUsesProvidedIndexNameFormatter() { // given BatchDelivery<String> batchDelivery = mock(BatchDelivery.class); IndexNameFormatter indexNameFormatter = mock(IndexNameFormatter.class); when(indexNameFormatter.format(any(LogEvent.class))).thenReturn("formattedIndexName"); ElasticsearchAppender.Builder builder = ElasticsearchAppenderTest.createTestElasticsearchAppenderBuilder(); builder.withBatchDelivery(batchDelivery); builder.withMessageOnly(false); builder.withIndexNameFormatter(indexNameFormatter); LogEvent logEvent = createTestLogEvent(); ElasticsearchAppender appender = builder.build(); // when appender.append(logEvent); // then verify(batchDelivery, times(1)).add(eq("formattedIndexName"), any(ItemSource.class)); }
@Override public ElasticsearchAppender build() { if (name == null) { throw new ConfigurationException("No name provided for Elasticsearch appender"); } if (batchDelivery == null) { throw new ConfigurationException("No batchDelivery [AsyncBatchDelivery] provided for Elasticsearch appender"); } if (layout == null) { layout = JacksonJsonLayout.newBuilder().build(); } return new ElasticsearchAppender(name, filter, layout, ignoreExceptions, batchDelivery, messageOnly, indexNameFormatter); }
@Test public void appenderUsesProvidedLayoutWhenMessageOnlyIsSetToFalse() { // given AbstractStringLayout layout = PowerMockito.mock(AbstractStringLayout.class); ElasticsearchAppender.Builder builder = ElasticsearchAppenderTest.createTestElasticsearchAppenderBuilder(); builder.withMessageOnly(false); builder.withLayout(layout); LogEvent logEvent = mock(LogEvent.class); ElasticsearchAppender appender = builder.build(); // when appender.append(logEvent); // then ArgumentCaptor<LogEvent> captor = ArgumentCaptor.forClass(LogEvent.class); verify(layout, times(1)).toSerializable(captor.capture()); assertEquals(logEvent, captor.getValue()); }
protected ElasticsearchAppender(String name, Filter filter, AbstractLayout layout, boolean ignoreExceptions, BatchDelivery batchDelivery, boolean messageOnly, IndexNameFormatter indexNameFormatter) { super(name, filter, layout, ignoreExceptions); this.indexNameFormatter = indexNameFormatter; this.itemAppender = createItemAppenderFactory().createInstance(messageOnly, layout, batchDelivery); }