Я пытаюсь запустить проект Spring Boot и AWS Lambda одновременно. /logging-slf4j.html, должна быть включена следующая зависимость, чтобы она работала:
implementation("org.apache.logging.log4j:log4j-slf4j2-impl:VERSION").
Однако при включении зависимости я получаю следующую проблему/ошибку от моего Sam cli
SLF4J(W): Class path contains multiple SLF4J providers.
SLF4J(W): Found provider [org.apache.logging.slf4j.SLF4JServiceProvider@3c09711b]
SLF4J(W): Found provider [ch.qos.logback.classic.spi.LogbackServiceProvider@5cc7c2a6]
SLF4J(W): See https://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J(I): Actual provider is of type [org.apache.logging.slf4j.SLF4JServiceProvider@3c09711b]
Error loading class playground.WebhookEntry: java.lang.ExceptionInInitializerError
java.lang.ExceptionInInitializerError
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Unknown Source)
at java.base/java.lang.Class.forName(Unknown Source)
Caused by: org.apache.logging.log4j.LoggingException: log4j-slf4j2-impl cannot be present with log4j-to-slf4j
at org.apache.logging.slf4j.Log4jLoggerFactory.validateContext(Log4jLoggerFactory.java:67)
at org.apache.logging.slf4j.Log4jLoggerFactory.newLogger(Log4jLoggerFactory.java:49)
at org.apache.logging.slf4j.Log4jLoggerFactory.newLogger(Log4jLoggerFactory.java:32)
at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getLogger(AbstractLoggerAdapter.java:52)
at org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:32)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:432)
at org.apache.logging.slf4j.SLF4JLoggerContext.createLogger(SLF4JLoggerContext.java:57)
at org.apache.logging.slf4j.SLF4JLoggerContext.getLogger(SLF4JLoggerContext.java:51)
at org.apache.logging.slf4j.SLF4JLoggerContext.getLogger(SLF4JLoggerContext.java:40)
at org.apache.logging.log4j.spi.LoggerContext.getLogger(LoggerContext.java:46)
at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:555)
at playground.WebhookEntry.(WebhookEntry.java:15)
... 3 more
< /code>
Я уже пытался исключить log4j-to-slf4j < /code> из всех зависимостей пружины через:
< /p>
implementation("some.spring.dependency:version) {
exclude(group = "org.apache.logging.log4j", module = "log4j-to-slf4j")
}
< /code>
Тем не менее, это привело только к ошибкам броски пружины. Я также проверил, что произойдет, если я не использую org.apache.logging.log4j: log4j-slf4j2-impl . Результатом является использование стандартного журнала или, другими словами, игнорируя мой log4j2.xml, что делает невозможным уровень журнала трассировки или политику.
Есть ли способ сделать Spring и AWS Lambdas совместимым с журналом log4j2? И под совместимым я имею в виду способ, которым оба (Spring и AWS) используют мой файл конфигурации log4j2.xml.
лямбда -точка входа: < /strong> < /p>
package playground;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestStreamHandler;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class WebhookEntry implements RequestStreamHandler {
private static final Logger LOGGER = LogManager.getLogger(WebhookEntry.class);
@Override
public void handleRequest(InputStream input, OutputStream output, Context context) throws IOException {
LOGGER.trace("RECEIVED TRACE MESSAGE");
LOGGER.info("RECEIVED INFO MESSAGE");
}
}
класс приложений Spring:
package playground;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringApp {
public static void main(String[] args) {
SpringApplication.run(SpringApp.class, args);
}
}
build.gradle.kts:
plugins {
id("java")
id("org.springframework.boot") version "3.4.1"
id("io.spring.dependency-management") version "1.0.11.RELEASE"
}
repositories {
mavenCentral()
}
dependencies {
testImplementation(platform("org.junit:junit-bom:5.10.0"))
testImplementation("org.junit.jupiter:junit-jupiter")
implementation("org.springframework.boot:spring-boot-starter")
implementation("org.springframework.boot:spring-boot-starter-web")
implementation("org.springframework.boot:spring-boot-starter-security")
implementation("org.springframework.boot:spring-boot-starter-validation")
implementation("org.springframework.boot:spring-boot-starter-actuator")
// AWS
implementation("com.amazonaws:aws-lambda-java-core:1.2.3")
implementation("com.amazonaws:aws-lambda-java-events:3.14.0")
implementation("software.amazon.awssdk:sqs:2.30.17")
runtimeOnly("com.amazonaws:aws-lambda-java-log4j2:1.6.0")
// Logging
implementation("org.apache.logging.log4j:log4j-core:2.24.3")
implementation("org.apache.logging.log4j:log4j-slf4j2-impl:2.24.3")
}
log4j2.xml:
Подробнее здесь: https://stackoverflow.com/questions/794 ... pring-boot
Log4j-slf4j2-impl не может присутствовать с log4j-to-slf4j (AWS Lambda, Spring-Boot, log4j2) ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Log4j-slf4j2-impl не может присутствовать с log4j-to-slf4j (AWS Lambda, Spring-Boot, log4j2)
Anonymous » » в форуме JAVA - 0 Ответы
- 24 Просмотры
-
Последнее сообщение Anonymous
-
-
-
NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder (с SLF4J, Logback и Spring Boot)
Anonymous » » в форуме JAVA - 0 Ответы
- 39 Просмотры
-
Последнее сообщение Anonymous
-