Skip to content

Commit 0809c8b

Browse files
committed
Removes support for EventData
The `org.slf4j.ext.EventData` class was a primitive equivalent of Log4j's `StructuredDataMessage`. QOS.CH published CVE-2018-8088 against this class and removed it from `slf4j-ext` version 1.7.26. For a long time we kept support code to convert `EventData` to its Log4j equivalent for compatibility's sake: users that relied on this class could still use Log4j Core, but the functionality was **automatically** disabled once they upgraded `slf4j-ext`. Since 5 years passed since `slfj4-ext` 1.7.26 was published, we can safely assume that all the users upgraded the library and the support code can be removed.
1 parent d1914b2 commit 0809c8b

File tree

6 files changed

+11
-107
lines changed

6 files changed

+11
-107
lines changed

log4j-parent/pom.xml

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,7 @@
1616
~ limitations under the License.
1717
-->
1818
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
19-
2019
<modelVersion>4.0.0</modelVersion>
21-
2220
<parent>
2321
<groupId>org.apache.logging.log4j</groupId>
2422
<artifactId>log4j-bom</artifactId>
@@ -140,8 +138,6 @@
140138
<pax-exam.version>4.13.5</pax-exam.version>
141139
<plexus-utils.version>3.5.1</plexus-utils.version>
142140
<slf4j.version>2.0.9</slf4j.version>
143-
<!-- Last version before a breaking change -->
144-
<slf4j-ext.version>1.7.25</slf4j-ext.version>
145141
<spring-boot.version>2.7.18</spring-boot.version>
146142
<spring-framework.version>5.3.31</spring-framework.version>
147143
<system-stubs.version>2.0.3</system-stubs.version>
@@ -956,7 +952,7 @@
956952
<dependency>
957953
<groupId>org.slf4j</groupId>
958954
<artifactId>slf4j-ext</artifactId>
959-
<version>${slf4j-ext.version}</version>
955+
<version>${slf4j.version}</version>
960956
</dependency>
961957

962958
<dependency>

log4j-slf4j-impl/pom.xml

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,6 @@
2929
<description>The Apache Log4j SLF4J API binding to Log4j 2 Core</description>
3030
<properties>
3131
<slf4j.version>1.7.36</slf4j.version>
32-
<!-- Do not upgrade the SLF4J version. 1.7.26 broke backward compatibility. Users can update the version if
33-
they do not require support for SLF4J's EventData -->
34-
<slf4j-ext.version>1.7.25</slf4j-ext.version>
3532

3633
<!--
3734
~ OSGi and JPMS options
@@ -60,7 +57,7 @@
6057
<dependency>
6158
<groupId>org.slf4j</groupId>
6259
<artifactId>slf4j-ext</artifactId>
63-
<version>${slf4j-ext.version}</version>
60+
<version>${slf4j.version}</version>
6461
<optional>true</optional>
6562
</dependency>
6663
</dependencies>
@@ -80,11 +77,6 @@
8077
<groupId>org.slf4j</groupId>
8178
<artifactId>slf4j-api</artifactId>
8279
</dependency>
83-
<dependency>
84-
<groupId>org.slf4j</groupId>
85-
<artifactId>slf4j-ext</artifactId>
86-
<optional>true</optional>
87-
</dependency>
8880
<dependency>
8981
<groupId>org.apache.logging.log4j</groupId>
9082
<artifactId>log4j-core</artifactId>
@@ -137,6 +129,11 @@
137129
<artifactId>junit-vintage-engine</artifactId>
138130
<scope>test</scope>
139131
</dependency>
132+
<dependency>
133+
<groupId>org.slf4j</groupId>
134+
<artifactId>slf4j-ext</artifactId>
135+
<scope>test</scope>
136+
</dependency>
140137
</dependencies>
141138
<build>
142139
<plugins>

log4j-slf4j-impl/src/main/java/org/apache/logging/slf4j/EventDataConverter.java

Lines changed: 0 additions & 51 deletions
This file was deleted.

log4j-slf4j-impl/src/main/java/org/apache/logging/slf4j/Log4jLogger.java

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -39,18 +39,14 @@ public class Log4jLogger implements LocationAwareLogger, Serializable {
3939
public static final String FQCN = Log4jLogger.class.getName();
4040

4141
private static final long serialVersionUID = 7869000638091304316L;
42-
private static final Marker EVENT_MARKER = MarkerFactory.getMarker("EVENT");
43-
private static final EventDataConverter CONVERTER = createConverter();
4442

45-
private final boolean eventLogger;
4643
private transient ExtendedLogger logger;
4744
private final String name;
4845
private transient Log4jMarkerFactory markerFactory;
4946

5047
public Log4jLogger(final Log4jMarkerFactory markerFactory, final ExtendedLogger logger, final String name) {
5148
this.markerFactory = markerFactory;
5249
this.logger = logger;
53-
this.eventLogger = "EventLogger".equals(name);
5450
this.name = name;
5551
}
5652

@@ -370,10 +366,7 @@ public void log(
370366
}
371367
final Message msg;
372368
final Throwable actualThrowable;
373-
if (CONVERTER != null && eventLogger && marker != null && marker.contains(EVENT_MARKER)) {
374-
msg = CONVERTER.convertEvent(message, params, throwable);
375-
actualThrowable = throwable != null ? throwable : msg.getThrowable();
376-
} else if (params == null) {
369+
if (params == null) {
377370
msg = new SimpleMessage(message);
378371
actualThrowable = throwable;
379372
} else {
@@ -407,15 +400,6 @@ private void writeObject(final ObjectOutputStream aOutputStream) throws IOExcept
407400
aOutputStream.defaultWriteObject();
408401
}
409402

410-
private static EventDataConverter createConverter() {
411-
try {
412-
LoaderUtil.loadClass("org.slf4j.ext.EventData");
413-
return new EventDataConverter();
414-
} catch (final ClassNotFoundException cnfe) {
415-
return null;
416-
}
417-
}
418-
419403
private static Level getLevel(final int i) {
420404
switch (i) {
421405
case TRACE_INT:

log4j-slf4j-impl/src/test/java/org/apache/logging/slf4j/LoggerTest.java

Lines changed: 2 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
import static org.junit.Assert.assertTrue;
2222

2323
import java.util.List;
24-
import java.util.Locale;
2524
import org.apache.logging.log4j.core.LogEvent;
2625
import org.apache.logging.log4j.core.test.appender.ListAppender;
2726
import org.apache.logging.log4j.core.test.junit.LoggerContextRule;
@@ -34,8 +33,6 @@
3433
import org.slf4j.LoggerFactory;
3534
import org.slf4j.MDC;
3635
import org.slf4j.Marker;
37-
import org.slf4j.ext.EventData;
38-
import org.slf4j.ext.EventLogger;
3936
import org.slf4j.ext.XLogger;
4037
import org.slf4j.ext.XLoggerFactory;
4138
import org.slf4j.spi.LocationAwareLogger;
@@ -140,30 +137,12 @@ public void testRootLogger() {
140137
public void doubleSubst() {
141138
logger.debug("Hello, {}", "Log4j {}");
142139
verify("List", "o.a.l.s.LoggerTest Hello, Log4j {} MDC{}" + Strings.LINE_SEPARATOR);
140+
// XLogger 1.7.x performs substitution twice:
141+
// https://jira.qos.ch/browse/SLF4J-421
143142
xlogger.debug("Hello, {}", "Log4j {}");
144143
verify("List", "o.a.l.s.LoggerTest Hello, Log4j Log4j {} MDC{}" + Strings.LINE_SEPARATOR);
145144
}
146145

147-
@Test
148-
public void testEventLogger() {
149-
MDC.put("loginId", "JohnDoe");
150-
MDC.put("ipAddress", "192.168.0.120");
151-
MDC.put("locale", Locale.US.getDisplayName());
152-
final EventData data = new EventData();
153-
data.setEventType("Transfer");
154-
data.setEventId("Audit@18060");
155-
data.setMessage("Transfer Complete");
156-
data.put("ToAccount", "123456");
157-
data.put("FromAccount", "123457");
158-
data.put("Amount", "200.00");
159-
EventLogger.logEvent(data);
160-
MDC.clear();
161-
verify(
162-
"EventLogger",
163-
"o.a.l.s.LoggerTest Transfer [Audit@18060 Amount=\"200.00\" FromAccount=\"123457\" ToAccount=\"123456\"] Transfer Complete"
164-
+ Strings.LINE_SEPARATOR);
165-
}
166-
167146
@Test
168147
public void testThrowable() {
169148
final Throwable expected = new RuntimeException();
@@ -228,6 +207,5 @@ public void cleanup() {
228207
MDC.clear();
229208
ctx.getListAppender("List").clear();
230209
ctx.getListAppender("UnformattedList").clear();
231-
ctx.getListAppender("EventLogger").clear();
232210
}
233211
}

log4j-slf4j2-impl/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
<version>${revision}</version>
2424
<relativePath>../log4j-parent</relativePath>
2525
</parent>
26+
2627
<artifactId>log4j-slf4j2-impl</artifactId>
2728
<packaging>jar</packaging>
2829
<name>Apache Log4j SLF4J 2.0 Binding</name>
@@ -105,7 +106,6 @@
105106
<dependency>
106107
<groupId>org.slf4j</groupId>
107108
<artifactId>slf4j-ext</artifactId>
108-
<version>${slf4j.version}</version>
109109
<scope>test</scope>
110110
</dependency>
111111
</dependencies>

0 commit comments

Comments
 (0)