반응형
Spring boot 설정 및 log4j2 설정 방법은?
다음을 통해 스프링 로그를 제대로 작성하려면 어떻게 해야 합니까?log4j2내가 가지고 있는 다른 의존관계(하이버네이트, Netty, Mina 등)와 함께?
저는 다양한 것들과 의존성의 조합을 시도했습니다.하지만 나는 스프링을 기록할 수 있고 다른 것은 할 수 없고, 아니면 스프링 외의 모든 것을 기록할 수 있습니다.
모든 종속 변수가 올바르게 기록되는 경우(그러나 Spring) 다음 오류가 발생합니다.
java.lang.NoSuchMethodError: org.apache.logging.log4j.core.config.ConfigurationFactory.getConfiguration(Lorg/apache/logging/log4j/core/config/ConfigurationSource;)Lorg/apache/logging/log4j/core/config/Configuration;
at org.springframework.boot.logging.log4j2.Log4J2LoggingSystem.loadConfiguration(Log4J2LoggingSystem.java:167)
at org.springframework.boot.logging.log4j2.Log4J2LoggingSystem.loadDefaults(Log4J2LoggingSystem.java:150)
at org.springframework.boot.logging.AbstractLoggingSystem.initializeWithConventions(AbstractLoggingSystem.java:75)
at org.springframework.boot.logging.AbstractLoggingSystem.initialize(AbstractLoggingSystem.java:50)
at org.springframework.boot.logging.log4j2.Log4J2LoggingSystem.initialize(Log4J2LoggingSystem.java:140)
at org.springframework.boot.logging.LoggingApplicationListener.initializeSystem(LoggingApplicationListener.java:277)
at org.springframework.boot.logging.LoggingApplicationListener.initialize(LoggingApplicationListener.java:255)
at org.springframework.boot.logging.LoggingApplicationListener.onApplicationEnvironmentPreparedEvent(LoggingApplicationListener.java:224)
at org.springframework.boot.logging.LoggingApplicationListener.onApplicationEvent(LoggingApplicationListener.java:200)
at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:166)
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:138)
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:121)
at org.springframework.boot.context.event.EventPublishingRunListener.publishEvent(EventPublishingRunListener.java:111)
at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:65)
at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:54)
at org.springframework.boot.SpringApplication.createAndRefreshContext(SpringApplication.java:329)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:306)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1185)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1174)
at com.myproject.MyProject.main(MyProject.java:XX)
이것은 나의build.gradle종속성
dependencies {
// FIX engine
compile 'org.quickfixj:quickfixj-all:1.6.2'
compile 'org.apache.mina:mina-core:2.0.16'
// Web API
compile ('org.springframework.boot:spring-boot-starter-web:1.4.1.RELEASE') {
// Remove default Spring loggers (where logback takes precedence)
exclude module: 'spring-boot-starter-logging'
}
// Logging
compile 'org.apache.logging.log4j:log4j-api:2.7'
compile 'org.apache.logging.log4j:log4j-core:2.7'
compile 'commons-logging:commons-logging:1.2' // for Spring logging
compile 'org.apache.logging.log4j:log4j-web:2.7' // for Spring logging
compile 'org.apache.logging.log4j:log4j-slf4j-impl:2.7' // for Hibernate logging
// ORM and Database Driver
compile 'org.hibernate:hibernate-core:5.2.4.Final'
compile 'org.postgresql:postgresql:9.4.1209'
// Key-value store
compile 'biz.paluch.redis:lettuce:4.1.2.Final'
// Testing
// The Groovy language
compile 'org.codehaus.groovy:groovy-all:2.4.6'
// Spock testing framework
testCompile 'org.spockframework:spock-core:1.0-groovy-2.4'
}
그런 다음 로깅 종속성을 제거하고 아래에 종속성을 추가합니다.
compile 'org.springframework.boot:spring-boot-starter-log4j2:1.4.1.RELEASE'
스프링 로깅은 작동하지만 다른 디프 로깅은 작동하지 않습니다.
여기가.main메소드(특별한 것은 아님)
public static void main(String[] args) {
// Fine tune a few logging settings so they don't log with TRACE or DEBUG levels.
Configurator.setLevel("org.hibernate", Level.ERROR);
Configurator.setLevel("org.jboss", Level.ERROR);
Configurator.setLevel("org.apache.mina", Level.ERROR);
Configurator.setLevel("io.netty", Level.ERROR);
Configurator.setLevel("quickfix.mina", Level.WARN);
Configurator.setLevel("com.lambdaworks", Level.WARN);
// ...
logger.info("FIX Controller started. Loading the API.");
SpringApplication.run(MyProject.class, args);
}
다시 말하지만, Spring을 제대로 로그에 기록하려면 어떻게 해야 할까요?log4j2내가 가지고 있는 다른 의존성과 함께?
Spring Boot 1.4.1은 Log4J 2.6을 탑재하고 지원하지만 2.7을 사용하려고 합니다.유감스럽게도 이 커밋에서 만들어진 2.7의 API 변경 사항이 있기 때문에 작동하지 않습니다.이것이 원인입니다.NoSuchMethodError당신이 보고 있는 것.
Log4J2 2.6.2로 다시 이동하면 문제가 해결됩니다.또는 Log4J 2.7을 사용하는 Spring Boot 1.5로 업그레이드할 수도 있습니다.
언급URL : https://stackoverflow.com/questions/40389512/how-to-set-up-spring-boot-and-log4j2-properly
반응형
'source' 카테고리의 다른 글
| Excel을 위해 vba에서 다차원 배열 변수를 초기화하는 방법 (0) | 2023.09.13 |
|---|---|
| XML 파일을 XmlDocument로 읽기 (0) | 2023.09.13 |
| Excel VBA 라인 컬러 / 마커 라인 컬러 (0) | 2023.09.13 |
| 패닉: AVD 시스템 경로가 끊겼습니다.ANDROD_SDK_ROOT 값 확인 (0) | 2023.09.13 |
| Android에서 XML을 통해 EditText를 편집할 수 없게 만드는 방법? (0) | 2023.09.08 |