Skip to content

Commit f64d894

Browse files
committed
remove slf4j binding (does not improve perfs)
1 parent 7b84d4c commit f64d894

File tree

7 files changed

+7
-245
lines changed

7 files changed

+7
-245
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@
7474
<maven.compiler.source>1.8</maven.compiler.source>
7575
<maven.compiler.target>1.8</maven.compiler.target>
7676
<log4j.version>2.20.0</log4j.version>
77-
<slf4j.version>2.0.4</slf4j.version>
77+
<slf4j.version>2.0.7</slf4j.version>
7878
<jackson.version>2.15.2</jackson.version>
7979
<aspectj.version>1.9.7</aspectj.version>
8080
<aws.sdk.version>2.20.136</aws.sdk.version>

powertools-logging/powertools-logging-log4j/pom.xml

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -151,14 +151,6 @@
151151
</dependency>
152152
</dependencies>
153153
</plugin>
154-
<plugin>
155-
<artifactId>maven-surefire-plugin</artifactId>
156-
<configuration>
157-
<systemPropertyVariables>
158-
<slf4j.binding>org.apache.logging.slf4j.SLF4JServiceProvider</slf4j.binding>
159-
</systemPropertyVariables>
160-
</configuration>
161-
</plugin>
162154
<plugin>
163155
<groupId>org.apache.maven.plugins</groupId>
164156
<artifactId>maven-checkstyle-plugin</artifactId>

powertools-logging/powertools-logging-log4j/src/test/java/org/apache/logging/log4j/layout/template/json/resolver/PowerToolsResolverFactoryTest.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
import software.amazon.lambda.powertools.logging.internal.LambdaLoggingAspect;
4242
import software.amazon.lambda.powertools.logging.internal.handler.PowertoolsLogEnabled;
4343

44-
@Order(2)
44+
@Order(1)
4545
class PowerToolsResolverFactoryTest {
4646

4747
@Mock
@@ -74,6 +74,8 @@ void shouldLogInJsonFormat() throws IllegalAccessException {
7474
try (MockedStatic<SystemWrapper> mocked = mockStatic(SystemWrapper.class)) {
7575
mocked.when(() -> getenv("_X_AMZN_TRACE_ID"))
7676
.thenReturn("Root=1-63441c4a-abcdef012345678912345678");
77+
mocked.when(() -> getenv("POWERTOOLS_SERVICE_NAME"))
78+
.thenReturn("testLog4j");
7779

7880
writeStaticField(LambdaLoggingAspect.class, "SAMPLING_RATE", "0.000000001", true);
7981

@@ -94,6 +96,8 @@ void shouldLogInEcsFormat() {
9496
.thenReturn("Root=1-63441c4a-abcdef012345678912345678");
9597
mocked.when(() -> getenv("AWS_REGION"))
9698
.thenReturn("eu-central-1");
99+
mocked.when(() -> getenv("POWERTOOLS_SERVICE_NAME"))
100+
.thenReturn("testLog4j");
97101

98102
PowertoolsLogEnabled handler = new PowertoolsLogEnabled();
99103
handler.handleRequest("Input", context);

powertools-logging/powertools-logging-log4j/src/test/java/software/amazon/lambda/powertools/logging/internal/LambdaLoggingAspectTest.java

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

powertools-logging/powertools-logging-logback/pom.xml

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -151,14 +151,6 @@
151151
<groupId>org.apache.maven.plugins</groupId>
152152
<artifactId>maven-checkstyle-plugin</artifactId>
153153
</plugin>
154-
<plugin>
155-
<artifactId>maven-surefire-plugin</artifactId>
156-
<configuration>
157-
<systemPropertyVariables>
158-
<slf4j.binding>ch.qos.logback.classic.spi.LogbackServiceProvider</slf4j.binding>
159-
</systemPropertyVariables>
160-
</configuration>
161-
</plugin>
162154
</plugins>
163155
</build>
164156

powertools-logging/powertools-logging-logback/src/test/java/software/amazon/lambda/powertools/logging/internal/LambdaLoggingAspectTest.java

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

powertools-logging/src/main/java/software/amazon/lambda/powertools/logging/internal/LambdaLoggingAspect.java

Lines changed: 1 addition & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ public final class LambdaLoggingAspect {
7474
private static Level LEVEL_AT_INITIALISATION; /* not final for test purpose */
7575

7676
static {
77-
loggingManager = loadLoggingManager();
77+
loggingManager = getLoggingManagerFromServiceLoader();
7878

7979
LEVEL_AT_INITIALISATION = loggingManager.getLogLevel(LOG);
8080

@@ -83,54 +83,6 @@ public final class LambdaLoggingAspect {
8383
}
8484
}
8585

86-
private static LoggingManager loadLoggingManager() {
87-
return getLoggingManagerFromSlf4jBinding().orElse(getLoggingManagerFromServiceLoader());
88-
}
89-
90-
/**
91-
* To avoid Service Loader loading of the log provider, SLF4j provides a system property 'slf4j.binding'
92-
* that users can set. If this is set, we can also leverage it and avoid Service Loader for the {@link LoggingManager}.
93-
* <p>In Lambda, system properties can be set with JAVA_TOOL_OPTIONS:
94-
* <ul>
95-
* <li>JAVA_TOOL_OPTIONS="-Dslf4j.binding=ch.qos.logback.classic.spi.LogbackServiceProvider"</li>
96-
* <li>JAVA_TOOL_OPTIONS="-Dslf4j.binding=org.apache.logging.slf4j.SLF4JServiceProvider"</li>
97-
* </ul>
98-
* </p>
99-
*
100-
* @return an instance of {@link LoggingManager} or null
101-
*/
102-
private static Optional<LoggingManager> getLoggingManagerFromSlf4jBinding() {
103-
LoggingManager loggingManager = null;
104-
105-
String slf4jBinding = System.getProperty("slf4j.binding");
106-
if (slf4jBinding != null) {
107-
LOG.debug("slf4j.binding is set to {}", slf4jBinding);
108-
try {
109-
if ("org.apache.logging.slf4j.SLF4JServiceProvider".equals(slf4jBinding)) {
110-
String managerClass = "software.amazon.lambda.powertools.logging.internal.Log4jLoggingManager";
111-
LOG.debug("Loading {}", managerClass);
112-
Class<?> log4jManagerClass = LambdaLoggingAspect.class.getClassLoader()
113-
.loadClass(managerClass);
114-
loggingManager = (LoggingManager) log4jManagerClass.newInstance();
115-
} else if ("ch.qos.logback.classic.spi.LogbackServiceProvider".equals(slf4jBinding)) {
116-
String managerClass = "software.amazon.lambda.powertools.logging.internal.LogbackLoggingManager";
117-
LOG.debug("Loading {}", managerClass);
118-
Class<?> log4backManagerClass = LambdaLoggingAspect.class.getClassLoader()
119-
.loadClass(managerClass);
120-
loggingManager = (LoggingManager) log4backManagerClass.newInstance();
121-
} else {
122-
LOG.warn("slf4j.binding {} not supported, fallback to Service Loader. "
123-
+ "Only log4j and logback are supported.", slf4jBinding);
124-
}
125-
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException e) {
126-
LOG.warn("Could not instantiate LoggingManager based on slf4j.binding {}, "
127-
+ "make sure to add either powertools-logging-log4j or powertools-logging-logback module",
128-
slf4jBinding);
129-
}
130-
}
131-
return Optional.ofNullable(loggingManager);
132-
}
133-
13486
/**
13587
* Use {@link ServiceLoader} to lookup for a {@link LoggingManager}.
13688
* A file <i>software.amazon.lambda.powertools.logging.internal.LoggingManager</i> must be created in

0 commit comments

Comments
 (0)