Skip to content

Commit 18f82d4

Browse files
committed
Avoid using deprecated Log4j exception converter ctors
1 parent 04d0710 commit 18f82d4

File tree

4 files changed

+47
-14
lines changed

4 files changed

+47
-14
lines changed

spring-boot-project/spring-boot/src/main/java/org/springframework/boot/logging/log4j2/ExtendedWhitespaceThrowablePatternConverter.java

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import org.apache.logging.log4j.core.config.plugins.Plugin;
2222
import org.apache.logging.log4j.core.pattern.ConverterKeys;
2323
import org.apache.logging.log4j.core.pattern.ExtendedThrowablePatternConverter;
24+
import org.apache.logging.log4j.core.pattern.LogEventPatternConverter;
2425
import org.apache.logging.log4j.core.pattern.PatternConverter;
2526
import org.apache.logging.log4j.core.pattern.ThrowablePatternConverter;
2627

@@ -34,24 +35,32 @@
3435
*/
3536
@Plugin(name = "ExtendedWhitespaceThrowablePatternConverter", category = PatternConverter.CATEGORY)
3637
@ConverterKeys({ "xwEx", "xwThrowable", "xwException" })
37-
public final class ExtendedWhitespaceThrowablePatternConverter extends ThrowablePatternConverter {
38+
public final class ExtendedWhitespaceThrowablePatternConverter extends LogEventPatternConverter {
3839

39-
private final ExtendedThrowablePatternConverter delegate;
40+
private final LogEventPatternConverter delegate;
41+
42+
private final String separator;
4043

4144
private ExtendedWhitespaceThrowablePatternConverter(Configuration configuration, String[] options) {
42-
super("WhitespaceExtendedThrowable", "throwable", options, configuration);
45+
super("WhitespaceExtendedThrowable", "throwable");
4346
this.delegate = ExtendedThrowablePatternConverter.newInstance(configuration, options);
47+
this.separator = WhitespaceThrowablePatternConverter.readSeparatorOption(options);
4448
}
4549

4650
@Override
4751
public void format(LogEvent event, StringBuilder buffer) {
4852
if (event.getThrown() != null) {
49-
buffer.append(this.options.getSeparator());
53+
buffer.append(this.separator);
5054
this.delegate.format(event, buffer);
51-
buffer.append(this.options.getSeparator());
55+
buffer.append(this.separator);
5256
}
5357
}
5458

59+
@Override
60+
public boolean handlesThrowable() {
61+
return true;
62+
}
63+
5564
/**
5665
* Creates a new instance of the class. Required by Log4J2.
5766
* @param configuration current configuration

spring-boot-project/spring-boot/src/main/java/org/springframework/boot/logging/log4j2/WhitespaceThrowablePatternConverter.java

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
import org.apache.logging.log4j.core.config.Configuration;
2121
import org.apache.logging.log4j.core.config.plugins.Plugin;
2222
import org.apache.logging.log4j.core.pattern.ConverterKeys;
23+
import org.apache.logging.log4j.core.pattern.ExtendedThrowablePatternConverter;
24+
import org.apache.logging.log4j.core.pattern.LogEventPatternConverter;
2325
import org.apache.logging.log4j.core.pattern.PatternConverter;
2426
import org.apache.logging.log4j.core.pattern.ThrowablePatternConverter;
2527

@@ -32,21 +34,43 @@
3234
*/
3335
@Plugin(name = "WhitespaceThrowablePatternConverter", category = PatternConverter.CATEGORY)
3436
@ConverterKeys({ "wEx", "wThrowable", "wException" })
35-
public final class WhitespaceThrowablePatternConverter extends ThrowablePatternConverter {
37+
public final class WhitespaceThrowablePatternConverter extends LogEventPatternConverter {
38+
39+
private final LogEventPatternConverter delegate;
40+
41+
private final String separator;
3642

3743
private WhitespaceThrowablePatternConverter(Configuration configuration, String[] options) {
38-
super("WhitespaceThrowable", "throwable", options, configuration);
44+
super("WhitespaceThrowable", "throwable");
45+
this.delegate = ExtendedThrowablePatternConverter.newInstance(configuration, options);
46+
this.separator = readSeparatorOption(options);
47+
}
48+
49+
static String readSeparatorOption(String[] options) {
50+
if (options != null) {
51+
for (String option : options) {
52+
if (option != null && option.startsWith("separator(") && option.endsWith(")")) {
53+
return option.substring("separator(".length(), option.length() - 1);
54+
}
55+
}
56+
}
57+
return System.lineSeparator();
3958
}
4059

4160
@Override
4261
public void format(LogEvent event, StringBuilder buffer) {
4362
if (event.getThrown() != null) {
44-
buffer.append(this.options.getSeparator());
45-
super.format(event, buffer);
46-
buffer.append(this.options.getSeparator());
63+
buffer.append(this.separator);
64+
this.delegate.format(event, buffer);
65+
buffer.append(this.separator);
4766
}
4867
}
4968

69+
@Override
70+
public boolean handlesThrowable() {
71+
return true;
72+
}
73+
5074
/**
5175
* Creates a new instance of the class. Required by Log4J2.
5276
* @param configuration current configuration

spring-boot-project/spring-boot/src/test/java/org/springframework/boot/logging/log4j2/ExtendedWhitespaceThrowablePatternConverterTests.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
import org.apache.logging.log4j.core.LogEvent;
2020
import org.apache.logging.log4j.core.config.DefaultConfiguration;
2121
import org.apache.logging.log4j.core.impl.Log4jLogEvent;
22-
import org.apache.logging.log4j.core.pattern.ThrowablePatternConverter;
22+
import org.apache.logging.log4j.core.pattern.LogEventPatternConverter;
2323
import org.junit.jupiter.api.Test;
2424

2525
import static org.assertj.core.api.Assertions.assertThat;
@@ -32,7 +32,7 @@
3232
*/
3333
class ExtendedWhitespaceThrowablePatternConverterTests {
3434

35-
private final ThrowablePatternConverter converter = ExtendedWhitespaceThrowablePatternConverter
35+
private final LogEventPatternConverter converter = ExtendedWhitespaceThrowablePatternConverter
3636
.newInstance(new DefaultConfiguration(), new String[] {});
3737

3838
@Test

spring-boot-project/spring-boot/src/test/java/org/springframework/boot/logging/log4j2/WhitespaceThrowablePatternConverterTests.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
import org.apache.logging.log4j.core.LogEvent;
2020
import org.apache.logging.log4j.core.config.DefaultConfiguration;
2121
import org.apache.logging.log4j.core.impl.Log4jLogEvent;
22-
import org.apache.logging.log4j.core.pattern.ThrowablePatternConverter;
22+
import org.apache.logging.log4j.core.pattern.LogEventPatternConverter;
2323
import org.junit.jupiter.api.Test;
2424

2525
import static org.assertj.core.api.Assertions.assertThat;
@@ -31,7 +31,7 @@
3131
*/
3232
class WhitespaceThrowablePatternConverterTests {
3333

34-
private final ThrowablePatternConverter converter = WhitespaceThrowablePatternConverter
34+
private final LogEventPatternConverter converter = WhitespaceThrowablePatternConverter
3535
.newInstance(new DefaultConfiguration(), new String[] {});
3636

3737
@Test

0 commit comments

Comments
 (0)