Skip to content

Commit 8c41442

Browse files
committed
Let LogstashEncoder/Layout throw an exception when setProviders() is called
1 parent 589cf00 commit 8c41442

File tree

3 files changed

+22
-0
lines changed

3 files changed

+22
-0
lines changed

src/main/java/net/logstash/logback/encoder/LogstashEncoder.java

+7
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import net.logstash.logback.LogstashFormatter;
2121
import net.logstash.logback.composite.AbstractCompositeJsonFormatter;
2222
import net.logstash.logback.composite.JsonProvider;
23+
import net.logstash.logback.composite.JsonProviders;
2324
import net.logstash.logback.fieldnames.LogstashFieldNames;
2425

2526
import ch.qos.logback.classic.pattern.ThrowableHandlingConverter;
@@ -229,4 +230,10 @@ public String getMessageSplitRegex() {
229230
public void setMessageSplitRegex(String messageSplitRegex) {
230231
getFormatter().setMessageSplitRegex(messageSplitRegex);
231232
}
233+
234+
235+
@Override
236+
public void setProviders(JsonProviders<ILoggingEvent> jsonProviders) {
237+
throw new IllegalArgumentException("Using the <providers> configuration property is not allowed. Use <provider> instead to registerd additional " + JsonProvider.class.getSimpleName() + ".");
238+
}
232239
}

src/main/java/net/logstash/logback/layout/LogstashLayout.java

+7
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import net.logstash.logback.LogstashFormatter;
2121
import net.logstash.logback.composite.AbstractCompositeJsonFormatter;
2222
import net.logstash.logback.composite.JsonProvider;
23+
import net.logstash.logback.composite.JsonProviders;
2324
import net.logstash.logback.fieldnames.LogstashFieldNames;
2425

2526
import ch.qos.logback.classic.pattern.ThrowableHandlingConverter;
@@ -228,4 +229,10 @@ public String getMessageSplitRegex() {
228229
public void setMessageSplitRegex(String messageSplitRegex) {
229230
getFormatter().setMessageSplitRegex(messageSplitRegex);
230231
}
232+
233+
234+
@Override
235+
public void setProviders(JsonProviders<ILoggingEvent> jsonProviders) {
236+
throw new IllegalArgumentException("Using the <providers> configuration property is not allowed. Use <provider> instead to registerd additional " + JsonProvider.class.getSimpleName() + ".");
237+
}
231238
}

src/test/java/net/logstash/logback/encoder/LogstashEncoderTest.java

+8
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import static net.logstash.logback.marker.Markers.appendEntries;
2020
import static org.assertj.core.api.Assertions.assertThat;
2121
import static org.assertj.core.api.Assertions.assertThatCode;
22+
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
2223
import static org.mockito.Mockito.mock;
2324
import static org.mockito.Mockito.spy;
2425
import static org.mockito.Mockito.when;
@@ -36,6 +37,7 @@
3637
import java.util.TimeZone;
3738

3839
import net.logstash.logback.composite.AbstractFormattedTimestampJsonProvider;
40+
import net.logstash.logback.composite.loggingevent.LoggingEventJsonProviders;
3941
import net.logstash.logback.decorate.JsonFactoryDecorator;
4042
import net.logstash.logback.decorate.JsonGeneratorDecorator;
4143
import net.logstash.logback.fieldnames.LogstashCommonFieldNames;
@@ -691,6 +693,12 @@ public void testMessageSplitDisabledByDefault() throws Exception {
691693
assertThat(node.path("message").textValue()).isEqualTo(message);
692694
}
693695

696+
@Test
697+
public void testJsonProvidersCannotBeChanged() {
698+
assertThatExceptionOfType(IllegalArgumentException.class)
699+
.isThrownBy(() -> encoder.setProviders(new LoggingEventJsonProviders()));
700+
}
701+
694702
private void assertJsonArray(JsonNode jsonNode, String... expected) {
695703
assertThat(jsonNode).isNotNull();
696704
assertThat(jsonNode.isArray()).isTrue();

0 commit comments

Comments
 (0)