From 3f68cfa0225c371f533b9adfa90ca50233371720 Mon Sep 17 00:00:00 2001 From: Bernd Ahlers Date: Tue, 6 Jun 2017 11:52:43 +0200 Subject: [PATCH] Revert "Add timing metrics to GelfOutput (#3810)" This reverts commit ff1a9f307a13f73cffaf2d37708417b6c114d51a. It broke backwards compatibility with 3rd party output plugins. --- .../org/graylog2/outputs/BenchmarkOutput.java | 11 +- .../outputs/DiscardMessageOutput.java | 20 ++-- .../graylog2/outputs/ElasticSearchOutput.java | 14 ++- .../java/org/graylog2/outputs/GelfOutput.java | 58 ++------- .../org/graylog2/outputs/LoggingOutput.java | 3 +- .../outputs/MessageOutputFactory.java | 2 +- .../plugin/outputs/MessageOutput.java | 3 +- .../processors/fakestreams/FakeStream.java | 13 ++- .../org/graylog2/outputs/GelfOutputTest.java | 110 ++---------------- 9 files changed, 66 insertions(+), 168 deletions(-) diff --git a/graylog2-server/src/main/java/org/graylog2/outputs/BenchmarkOutput.java b/graylog2-server/src/main/java/org/graylog2/outputs/BenchmarkOutput.java index 1243c5344eb2..9ec9f24e3ebd 100644 --- a/graylog2-server/src/main/java/org/graylog2/outputs/BenchmarkOutput.java +++ b/graylog2-server/src/main/java/org/graylog2/outputs/BenchmarkOutput.java @@ -31,7 +31,6 @@ import org.graylog2.plugin.streams.Stream; import org.graylog2.shared.journal.Journal; -import javax.annotation.Nullable; import javax.inject.Inject; import java.io.File; import java.util.List; @@ -49,6 +48,14 @@ public class BenchmarkOutput implements MessageOutput { private final CsvReporter csvReporter; private final Journal journal; + @AssistedInject + public BenchmarkOutput(final MetricRegistry metricRegistry, + final Journal journal, + @Assisted Stream stream, + @Assisted Configuration configuration) { + this(metricRegistry, journal); + } + @Inject public BenchmarkOutput(final MetricRegistry metricRegistry, final Journal journal) { this.journal = journal; @@ -102,7 +109,7 @@ public void write(List messages) throws Exception { public interface Factory extends MessageOutput.Factory { @Override - GelfOutput create(Stream stream, Configuration configuration, @Nullable String id); + GelfOutput create(Stream stream, Configuration configuration); @Override Config getConfig(); diff --git a/graylog2-server/src/main/java/org/graylog2/outputs/DiscardMessageOutput.java b/graylog2-server/src/main/java/org/graylog2/outputs/DiscardMessageOutput.java index 94fd6c389713..58a12a1e2091 100644 --- a/graylog2-server/src/main/java/org/graylog2/outputs/DiscardMessageOutput.java +++ b/graylog2-server/src/main/java/org/graylog2/outputs/DiscardMessageOutput.java @@ -18,13 +18,15 @@ import com.codahale.metrics.Meter; import com.codahale.metrics.MetricRegistry; +import com.google.inject.assistedinject.Assisted; +import com.google.inject.assistedinject.AssistedInject; import org.graylog2.plugin.Message; import org.graylog2.plugin.configuration.Configuration; +import org.graylog2.plugin.configuration.ConfigurationRequest; import org.graylog2.plugin.outputs.MessageOutput; import org.graylog2.plugin.streams.Stream; import org.graylog2.shared.journal.Journal; -import javax.annotation.Nullable; import javax.inject.Inject; import java.util.List; import java.util.concurrent.atomic.AtomicBoolean; @@ -36,6 +38,14 @@ public class DiscardMessageOutput implements MessageOutput { private final Journal journal; private final Meter messagesDiscarded; + @AssistedInject + public DiscardMessageOutput(final Journal journal, + final MetricRegistry metricRegistry, + @Assisted Stream stream, + @Assisted Configuration configuration) { + this(journal, metricRegistry); + } + @Inject public DiscardMessageOutput(final Journal journal, final MetricRegistry metricRegistry) { this.journal = journal; @@ -72,14 +82,6 @@ public void write(List messages) throws Exception { } public interface Factory extends MessageOutput.Factory { - @Override - DiscardMessageOutput create(Stream stream, Configuration configuration, @Nullable String id); - - @Override - Config getConfig(); - - @Override - Descriptor getDescriptor(); } public static class Config extends MessageOutput.Config { diff --git a/graylog2-server/src/main/java/org/graylog2/outputs/ElasticSearchOutput.java b/graylog2-server/src/main/java/org/graylog2/outputs/ElasticSearchOutput.java index 75aeb006c846..07cdb850a314 100644 --- a/graylog2-server/src/main/java/org/graylog2/outputs/ElasticSearchOutput.java +++ b/graylog2-server/src/main/java/org/graylog2/outputs/ElasticSearchOutput.java @@ -21,6 +21,8 @@ import com.codahale.metrics.Timer; import com.google.common.base.Joiner; import com.google.common.collect.Ordering; +import com.google.inject.assistedinject.Assisted; +import com.google.inject.assistedinject.AssistedInject; import org.graylog2.indexer.IndexSet; import org.graylog2.indexer.messages.Messages; import org.graylog2.plugin.Message; @@ -32,7 +34,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.annotation.Nullable; import javax.inject.Inject; import java.util.Collections; import java.util.List; @@ -55,6 +56,15 @@ public class ElasticSearchOutput implements MessageOutput { private final Journal journal; private final AtomicBoolean isRunning = new AtomicBoolean(false); + @AssistedInject + public ElasticSearchOutput(MetricRegistry metricRegistry, + Messages messages, + Journal journal, + @Assisted Stream stream, + @Assisted Configuration configuration) { + this(metricRegistry, messages, journal); + } + @Inject public ElasticSearchOutput(MetricRegistry metricRegistry, Messages messages, @@ -112,7 +122,7 @@ public boolean isRunning() { public interface Factory extends MessageOutput.Factory { @Override - ElasticSearchOutput create(Stream stream, Configuration configuration, @Nullable String id); + ElasticSearchOutput create(Stream stream, Configuration configuration); @Override Config getConfig(); diff --git a/graylog2-server/src/main/java/org/graylog2/outputs/GelfOutput.java b/graylog2-server/src/main/java/org/graylog2/outputs/GelfOutput.java index dfd9d949bb4a..e7f0d66c5fc5 100644 --- a/graylog2-server/src/main/java/org/graylog2/outputs/GelfOutput.java +++ b/graylog2-server/src/main/java/org/graylog2/outputs/GelfOutput.java @@ -16,9 +16,6 @@ */ package org.graylog2.outputs; -import com.codahale.metrics.Meter; -import com.codahale.metrics.MetricRegistry; -import com.codahale.metrics.Timer; import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.ImmutableMap; import com.google.inject.assistedinject.Assisted; @@ -52,9 +49,8 @@ import java.util.Map; import java.util.concurrent.atomic.AtomicBoolean; -import static com.codahale.metrics.MetricRegistry.name; +import static com.google.common.base.Preconditions.checkNotNull; import static com.google.common.base.Strings.isNullOrEmpty; -import static java.util.Objects.requireNonNull; public class GelfOutput implements MessageOutput { private static final Logger LOG = LoggerFactory.getLogger(GelfOutput.class); @@ -74,62 +70,29 @@ public class GelfOutput implements MessageOutput { private final AtomicBoolean isRunning = new AtomicBoolean(false); private final GelfTransport transport; - private final String id; - private final String streamId; - private final MetricRegistry metricRegistry; - private final String writesMetricName; - private final Meter writes; - private final String processTimeMetricName; - private final Timer processTime; @Inject - public GelfOutput(@Assisted Stream stream, - @Assisted Configuration configuration, - @Assisted @Nullable String id, - MetricRegistry metricRegistry) throws MessageOutputConfigurationException { - this(buildTransport(configuration), stream.getId(), id, metricRegistry); + public GelfOutput(@Assisted Configuration configuration) throws MessageOutputConfigurationException { + this(buildTransport(configuration)); } @VisibleForTesting - GelfOutput(GelfTransport gelfTransport, String streamId, @Nullable String id, MetricRegistry metricRegistry) { - this.transport = requireNonNull(gelfTransport, "gelfTransport must not be null"); - this.streamId = streamId; - this.id = id; - this.metricRegistry = requireNonNull(metricRegistry, "metricRegistry must not be null"); - - this.writesMetricName = buildMetricName(streamId, id, "writes"); - this.writes = metricRegistry.meter(writesMetricName); - this.processTimeMetricName = buildMetricName(streamId, id, "processTime"); - this.processTime = metricRegistry.timer(processTimeMetricName); - + GelfOutput(GelfTransport gelfTransport) { + this.transport = checkNotNull(gelfTransport); isRunning.set(true); } - private String buildMetricName(String streamId, String id, String name) { - return isNullOrEmpty(id) - ? name(GelfOutput.class, "stream", streamId, name) - : name(GelfOutput.class, id, "stream", streamId, name); - } - @Override public void stop() { - LOG.debug("Stopping {} [{}] on stream [{}]", transport.getClass().getName(), id, streamId); + LOG.debug("Stopping {}", transport.getClass().getName()); try { transport.stop(); - cleanupMetrics(); } catch (Exception e) { - LOG.error("Error stopping {} [{}] on stream [{}]", transport.getClass().getName(), id, streamId, e); + LOG.error("Error stopping " + transport.getClass().getName(), e); } isRunning.set(false); } - private void cleanupMetrics() { - if (metricRegistry != null && metricRegistry.getMetrics() != null) { - metricRegistry.remove(writesMetricName); - metricRegistry.remove(processTimeMetricName); - } - } - @Override public boolean isRunning() { return isRunning.get(); @@ -218,10 +181,7 @@ protected static GelfTransport buildTransport(final Configuration configuration) @Override public void write(final Message message) throws Exception { - writes.mark(); - try (final Timer.Context ignored = processTime.time()) { - transport.send(toGELFMessage(message)); - } + transport.send(toGELFMessage(message)); } @Override @@ -307,7 +267,7 @@ protected GelfMessage toGELFMessage(final Message message) { public interface Factory extends MessageOutput.Factory { @Override - GelfOutput create(Stream stream, Configuration configuration, @Nullable String id); + GelfOutput create(Stream stream, Configuration configuration); @Override Config getConfig(); diff --git a/graylog2-server/src/main/java/org/graylog2/outputs/LoggingOutput.java b/graylog2-server/src/main/java/org/graylog2/outputs/LoggingOutput.java index 59f802d24503..0d719ea9422e 100644 --- a/graylog2-server/src/main/java/org/graylog2/outputs/LoggingOutput.java +++ b/graylog2-server/src/main/java/org/graylog2/outputs/LoggingOutput.java @@ -28,7 +28,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.annotation.Nullable; import javax.inject.Inject; import java.util.List; import java.util.concurrent.atomic.AtomicBoolean; @@ -70,7 +69,7 @@ public void write(List messages) throws Exception { public interface Factory extends MessageOutput.Factory { @Override - LoggingOutput create(Stream stream, Configuration configuration, @Nullable String id); + LoggingOutput create(Stream stream, Configuration configuration); @Override Config getConfig(); diff --git a/graylog2-server/src/main/java/org/graylog2/outputs/MessageOutputFactory.java b/graylog2-server/src/main/java/org/graylog2/outputs/MessageOutputFactory.java index 1f67857d1204..0a4ea63c6143 100644 --- a/graylog2-server/src/main/java/org/graylog2/outputs/MessageOutputFactory.java +++ b/graylog2-server/src/main/java/org/graylog2/outputs/MessageOutputFactory.java @@ -48,7 +48,7 @@ public MessageOutput fromStreamOutput(Output output, final Stream stream, Config Preconditions.checkArgument(factory != null, "Output type is not supported: %s!", outputType); - return factory.create(stream, configuration, output.getId()); + return factory.create(stream, configuration); } diff --git a/graylog2-server/src/main/java/org/graylog2/plugin/outputs/MessageOutput.java b/graylog2-server/src/main/java/org/graylog2/plugin/outputs/MessageOutput.java index fab8ce144c26..02f5f770b5e7 100644 --- a/graylog2-server/src/main/java/org/graylog2/plugin/outputs/MessageOutput.java +++ b/graylog2-server/src/main/java/org/graylog2/plugin/outputs/MessageOutput.java @@ -23,12 +23,11 @@ import org.graylog2.plugin.configuration.ConfigurationRequest; import org.graylog2.plugin.streams.Stream; -import javax.annotation.Nullable; import java.util.List; public interface MessageOutput extends Stoppable { interface Factory { - T create(Stream stream, Configuration configuration, @Nullable String id); + T create(Stream stream, Configuration configuration); Config getConfig(); Descriptor getDescriptor(); } diff --git a/graylog2-server/src/test/java/org/graylog2/buffers/processors/fakestreams/FakeStream.java b/graylog2-server/src/test/java/org/graylog2/buffers/processors/fakestreams/FakeStream.java index b5039bc07bb8..1a0da36ca6df 100644 --- a/graylog2-server/src/test/java/org/graylog2/buffers/processors/fakestreams/FakeStream.java +++ b/graylog2-server/src/test/java/org/graylog2/buffers/processors/fakestreams/FakeStream.java @@ -16,12 +16,21 @@ */ package org.graylog2.buffers.processors.fakestreams; +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import org.graylog2.plugin.outputs.MessageOutput; import org.graylog2.streams.StreamImpl; -import java.util.Collections; +import java.util.List; public class FakeStream extends StreamImpl { + private List outputs = Lists.newArrayList(); + public FakeStream(String title) { - super(Collections.singletonMap(StreamImpl.FIELD_TITLE, title)); + super(Maps.newHashMap()); + } + + public void addOutput(MessageOutput output) { + outputs.add(output); } } diff --git a/graylog2-server/src/test/java/org/graylog2/outputs/GelfOutputTest.java b/graylog2-server/src/test/java/org/graylog2/outputs/GelfOutputTest.java index 742a62d9e33d..9d0a64fcf19c 100644 --- a/graylog2-server/src/test/java/org/graylog2/outputs/GelfOutputTest.java +++ b/graylog2-server/src/test/java/org/graylog2/outputs/GelfOutputTest.java @@ -16,7 +16,6 @@ */ package org.graylog2.outputs; -import com.codahale.metrics.MetricRegistry; import org.graylog2.gelfclient.GelfMessage; import org.graylog2.gelfclient.GelfMessageLevel; import org.graylog2.gelfclient.transport.GelfTransport; @@ -24,11 +23,9 @@ import org.graylog2.plugin.configuration.ConfigurationRequest; import org.joda.time.DateTime; import org.joda.time.DateTimeZone; -import org.junit.Before; import org.junit.Test; import org.mockito.Mockito; -import static org.assertj.core.api.Assertions.assertThat; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.mockito.ArgumentMatchers.eq; @@ -37,19 +34,12 @@ import static org.mockito.Mockito.verify; public class GelfOutputTest { - private MetricRegistry metricRegistry; - - @Before - public void setUp() { - metricRegistry = new MetricRegistry(); - } - @Test public void testWrite() throws Exception { final GelfTransport transport = mock(GelfTransport.class); final Message message = mock(Message.class); final GelfMessage gelfMessage = new GelfMessage("Test"); - final GelfOutput gelfOutput = Mockito.spy(new GelfOutput(transport, "0123456789abcdef", null, metricRegistry)); + final GelfOutput gelfOutput = Mockito.spy(new GelfOutput(transport)); doReturn(gelfMessage).when(gelfOutput).toGELFMessage(message); gelfOutput.write(message); @@ -57,84 +47,6 @@ public void testWrite() throws Exception { verify(transport).send(eq(gelfMessage)); } - @Test - public void testWritesMetric() throws Exception { - final GelfTransport transport = mock(GelfTransport.class); - final Message message = mock(Message.class); - final GelfMessage gelfMessage = new GelfMessage("Test"); - final GelfOutput gelfOutput = Mockito.spy(new GelfOutput(transport, "0123456789abcdef", null, metricRegistry)); - doReturn(gelfMessage).when(gelfOutput).toGELFMessage(message); - - for(int i = 0; i < 10; i++) { - gelfOutput.write(message); - } - - assertThat(metricRegistry.getMeters()).isNotEmpty(); - assertThat(metricRegistry.getMeters().get("org.graylog2.outputs.GelfOutput.stream.0123456789abcdef.writes").getCount()).isEqualTo(10L); - } - - @Test - public void testWritesMetricWithId() throws Exception { - final GelfTransport transport = mock(GelfTransport.class); - final Message message = mock(Message.class); - final GelfMessage gelfMessage = new GelfMessage("Test"); - final GelfOutput gelfOutput = Mockito.spy(new GelfOutput(transport, "0123456789abcdef", "00deadbeefcafebabe", metricRegistry)); - doReturn(gelfMessage).when(gelfOutput).toGELFMessage(message); - - for(int i = 0; i < 10; i++) { - gelfOutput.write(message); - } - - assertThat(metricRegistry.getMeters()).isNotEmpty(); - assertThat(metricRegistry.getMeters().get("org.graylog2.outputs.GelfOutput.00deadbeefcafebabe.stream.0123456789abcdef.writes").getCount()).isEqualTo(10L); - } - - @Test - public void testProcessingTimeMetric() throws Exception { - final GelfTransport transport = mock(GelfTransport.class); - final Message message = mock(Message.class); - final GelfMessage gelfMessage = new GelfMessage("Test"); - final GelfOutput gelfOutput = Mockito.spy(new GelfOutput(transport, "0123456789abcdef", null, metricRegistry)); - doReturn(gelfMessage).when(gelfOutput).toGELFMessage(message); - - for(int i = 0; i < 10; i++) { - gelfOutput.write(message); - } - - assertThat(metricRegistry.getTimers()).isNotEmpty(); - assertThat(metricRegistry.getTimers().get("org.graylog2.outputs.GelfOutput.stream.0123456789abcdef.processTime").getCount()).isEqualTo(10L); - } - - @Test - public void testProcessingTimeMetricWithId() throws Exception { - final GelfTransport transport = mock(GelfTransport.class); - final Message message = mock(Message.class); - final GelfMessage gelfMessage = new GelfMessage("Test"); - final GelfOutput gelfOutput = Mockito.spy(new GelfOutput(transport, "0123456789abcdef", "00deadbeefcafebabe", metricRegistry)); - doReturn(gelfMessage).when(gelfOutput).toGELFMessage(message); - - for(int i = 0; i < 10; i++) { - gelfOutput.write(message); - } - - assertThat(metricRegistry.getTimers()).isNotEmpty(); - assertThat(metricRegistry.getTimers().get("org.graylog2.outputs.GelfOutput.00deadbeefcafebabe.stream.0123456789abcdef.processTime").getCount()).isEqualTo(10L); - } - - @Test - public void testStopRemovesMetrics() throws Exception { - final GelfTransport transport = mock(GelfTransport.class); - final GelfOutput gelfOutput = new GelfOutput(transport, "0123456789abcdef", null, metricRegistry); - - assertThat(metricRegistry.getMetrics()).containsKeys( - "org.graylog2.outputs.GelfOutput.stream.0123456789abcdef.writes", - "org.graylog2.outputs.GelfOutput.stream.0123456789abcdef.processTime"); - - gelfOutput.stop(); - - assertThat(metricRegistry.getMetrics()).isEmpty(); - } - @Test public void testGetRequestedConfiguration() throws Exception { final GelfOutput.Config gelfOutputConfig = new GelfOutput.Config(); @@ -148,7 +60,7 @@ public void testGetRequestedConfiguration() throws Exception { @Test public void testToGELFMessageTimestamp() throws Exception { final GelfTransport transport = mock(GelfTransport.class); - final GelfOutput gelfOutput = new GelfOutput(transport, "0123456789abcdef", null, metricRegistry); + final GelfOutput gelfOutput = new GelfOutput(transport); final DateTime now = DateTime.now(DateTimeZone.UTC); final Message message = new Message("Test", "Source", now); @@ -160,7 +72,7 @@ public void testToGELFMessageTimestamp() throws Exception { @Test public void testToGELFMessageFullMessage() throws Exception { final GelfTransport transport = mock(GelfTransport.class); - final GelfOutput gelfOutput = new GelfOutput(transport, "0123456789abcdef", null, metricRegistry); + final GelfOutput gelfOutput = new GelfOutput(transport); final DateTime now = DateTime.now(DateTimeZone.UTC); final Message message = new Message("Test", "Source", now); message.addField(Message.FIELD_FULL_MESSAGE, "Full Message"); @@ -173,7 +85,7 @@ public void testToGELFMessageFullMessage() throws Exception { @Test public void testToGELFMessageWithValidNumericLevel() throws Exception { final GelfTransport transport = mock(GelfTransport.class); - final GelfOutput gelfOutput = new GelfOutput(transport, "0123456789abcdef", null, metricRegistry); + final GelfOutput gelfOutput = new GelfOutput(transport); final DateTime now = DateTime.now(DateTimeZone.UTC); final Message message = new Message("Test", "Source", now); message.addField("level", 6); @@ -186,7 +98,7 @@ public void testToGELFMessageWithValidNumericLevel() throws Exception { @Test public void testToGELFMessageWithInvalidNumericLevel() throws Exception { final GelfTransport transport = mock(GelfTransport.class); - final GelfOutput gelfOutput = new GelfOutput(transport, "0123456789abcdef", null, metricRegistry); + final GelfOutput gelfOutput = new GelfOutput(transport); final DateTime now = DateTime.now(DateTimeZone.UTC); final Message message = new Message("Test", "Source", now); message.addField("level", -1L); @@ -199,7 +111,7 @@ public void testToGELFMessageWithInvalidNumericLevel() throws Exception { @Test public void testToGELFMessageWithValidStringLevel() throws Exception { final GelfTransport transport = mock(GelfTransport.class); - final GelfOutput gelfOutput = new GelfOutput(transport, "0123456789abcdef", null, metricRegistry); + final GelfOutput gelfOutput = new GelfOutput(transport); final DateTime now = DateTime.now(DateTimeZone.UTC); final Message message = new Message("Test", "Source", now); message.addField("level", "6"); @@ -212,7 +124,7 @@ public void testToGELFMessageWithValidStringLevel() throws Exception { @Test public void testToGELFMessageWithInvalidStringLevel() throws Exception { final GelfTransport transport = mock(GelfTransport.class); - final GelfOutput gelfOutput = new GelfOutput(transport, "0123456789abcdef", null, metricRegistry); + final GelfOutput gelfOutput = new GelfOutput(transport); final DateTime now = DateTime.now(DateTimeZone.UTC); final Message message = new Message("Test", "Source", now); message.addField("level", "BOOM"); @@ -225,7 +137,7 @@ public void testToGELFMessageWithInvalidStringLevel() throws Exception { @Test public void testToGELFMessageWithInvalidNumericStringLevel() throws Exception { final GelfTransport transport = mock(GelfTransport.class); - final GelfOutput gelfOutput = new GelfOutput(transport, "0123456789abcdef", null, metricRegistry); + final GelfOutput gelfOutput = new GelfOutput(transport); final DateTime now = DateTime.now(DateTimeZone.UTC); final Message message = new Message("Test", "Source", now); message.addField("level", "-1"); @@ -238,7 +150,7 @@ public void testToGELFMessageWithInvalidNumericStringLevel() throws Exception { @Test public void testToGELFMessageWithInvalidTypeLevel() throws Exception { final GelfTransport transport = mock(GelfTransport.class); - final GelfOutput gelfOutput = new GelfOutput(transport, "0123456789abcdef", null, metricRegistry); + final GelfOutput gelfOutput = new GelfOutput(transport); final DateTime now = DateTime.now(DateTimeZone.UTC); final Message message = new Message("Test", "Source", now); message.addField("level", new Object()); @@ -251,7 +163,7 @@ public void testToGELFMessageWithInvalidTypeLevel() throws Exception { @Test public void testToGELFMessageWithNullLevel() throws Exception { final GelfTransport transport = mock(GelfTransport.class); - final GelfOutput gelfOutput = new GelfOutput(transport, "0123456789abcdef", null, metricRegistry); + final GelfOutput gelfOutput = new GelfOutput(transport); final DateTime now = DateTime.now(DateTimeZone.UTC); final Message message = new Message("Test", "Source", now); message.addField("level", null); @@ -260,4 +172,4 @@ public void testToGELFMessageWithNullLevel() throws Exception { assertEquals(GelfMessageLevel.ALERT, gelfMessage.getLevel()); } -} \ No newline at end of file +}