[SPRING] Spring 프로필, 다른 Log4j2 구성
SPRINGSpring 프로필, 다른 Log4j2 구성
내 application.yml 있음 :
logging:
config: classpath:log4j2.debug.yml
다른 프로필의 다른 사용자도 있습니다. 신청서를 작성하면 다음과 같이 처리됩니다.
ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console.
프로파일 된 프로파일 옆에 log4j2.xml을두면 작동합니다. 그래서 이것은 내가 의존성을 그리워하거나 log4j2로는 불가능하다고 생각합니다.
참고 : 부팅 로깅 수준은 내가 시도한 것처럼 가능해야한다고 말합니다.
해결법
-
==============================
1.내 편에서는 yaml 대신 속성 파일을 사용하고 있습니다. 나는 콘솔에 모든 것을 기록하는 로그 파일과 파일에 로그인하는 두 개의 로그 파일을 원했다. 그래서 두 개의 log4j2 구성 파일, log4j2-dev.xml 및 log4j2-file.xml을 만들었습니다.
내 편에서는 yaml 대신 속성 파일을 사용하고 있습니다. 나는 콘솔에 모든 것을 기록하는 로그 파일과 파일에 로그인하는 두 개의 로그 파일을 원했다. 그래서 두 개의 log4j2 구성 파일, log4j2-dev.xml 및 log4j2-file.xml을 만들었습니다.
나는 두 개의 Spring profile을 사용한다. 하나는 default이고 다른 하나는 "dev"이다. log4j2 구성 파일을 전환하려면 다음을 포함하는 application.properties 파일을 만들었습니다.
spring.profiles.active= logging.config=classpath:log4j2-file.xml
그리고 또 다른 속성 파일 인 application-dev.properties가 있습니다. 이는 Spring이 "dev"프로파일을 감지 할 때 자동으로 활성화됩니다. 그것은 다음을 포함합니다 :
logging.config=classpath:log4j2-dev.xml
log4j2-dev.xml 구성을 사용하려면 application.properties의 "spring.profiles.active ="값으로 "dev"를 추가하기 만하면됩니다.
Feiyu Zhou의 답변을이 페이지에서 살펴볼 수 있습니다. 그는 Yaml 구성 파일을 사용하여 솔루션을 제시합니다 : application.properties로 log4j2 경로를 정의하는 방법은 무엇입니까?
물론 application.properties의 logging.config 속성을 제거하고 log4j2.xml에서 log4j2-file.xml의 이름을 바꿀 수 있습니다. Spring 프로파일에 의해 트리거 될 필요없이 Log4j2에 의해 기본적으로로드 될 것입니다
-
==============================
2.Log4j 2 Configuration 매뉴얼 페이지를 참고하십시오 :
Log4j 2 Configuration 매뉴얼 페이지를 참고하십시오 :
Log4j2는 classpath에서 log4j2-test.yaml이라는 파일을 찾은 다음 JSON과 XML에서 동일한 파일을 찾은 다음 클래스 패스에서 log4j2.yml이라는 파일을 찾습니다.
구성 파일 위치를 명시 적으로 지정할 수도 있습니다.
-
==============================
3.Spring 프로파일 (어떤 프로파일이 활성화되어 있는지 명시 적으로 지정해야 함)을 사용하는 대신 Maven 빌드 프로파일을 사용하여 log4j2 구성 파일간에 전환 할 수 있습니다.
Spring 프로파일 (어떤 프로파일이 활성화되어 있는지 명시 적으로 지정해야 함)을 사용하는 대신 Maven 빌드 프로파일을 사용하여 log4j2 구성 파일간에 전환 할 수 있습니다.
application.yml
logging: config: classpath:${log4j2.config}
Pom.hml
<project> <properties> <log4j2.config>log4j2.xml</log4j2.config> </properties> <profiles> <profile> <id>local</id> <properties> <log4j2.config>log4j2-local.xml</log4j2.config> </properties> </profile> </profiles> </project>
이 방법으로 기본 log4j 설정 파일 (log4j2.xml)을 일반 빌드에 사용할 수 있습니다.
두 번째 설정 파일 (log4j2-local.xml)은 프로젝트가 로컬 빌드 프로파일 (예 : mvn 패키지 -Plocal)로 빌드 될 때마다 로컬 개발 / 테스트에 사용될 수 있습니다.
-
==============================
4.여기에 스프링 부트 2와 log4j2.xml로 저에게 도움이되는 해결책이 있습니다. application-local.properties, 다른 env 및 프로필에 대한 application-dev.properties와 같은 파일이 있는지 확인하십시오.
여기에 스프링 부트 2와 log4j2.xml로 저에게 도움이되는 해결책이 있습니다. application-local.properties, 다른 env 및 프로필에 대한 application-dev.properties와 같은 파일이 있는지 확인하십시오.
log4j2.xml을 src / main / resources 폴더에 보관하지 말고 src / main / resources 아래에 생성 된 프로필 관련 폴더 아래에 보관해야합니다. src / main / resources / local src / main / resources / dev 등 ... 다음과 같은 항목을 만듭니다. logging.config : classpath : local / log4j2.xml in application-local.properties 과 logging.config : classpath : dev / log4j2.xml in application-dev.properties
또한 log4j2.xml을 동일한 파일 이름 log4j2.xml로 유지하고, 응용 프로그램이 기본적으로 원하지 않는 항목을 선택하기 때문에 src / main / resources 아래에 하나도 보관하지 마십시오. 환경마다 다른 xml이 있고 작동해야하는 경우 각기 다른 구성을 가져야합니다. 제공된 프로필 인수로 봄 부팅을 실행하십시오.
그런 다음 아래와 같이 환경을 기반으로 로그 파일 경로를 수정할 수 있습니다.
<RollingFile name="RollingFileAppender" fileName="c:\\logs\\logs_test\\og4j2-demo.log" filePattern="c:\\logs\\logs_test\\log4j2-demo-%d{yyyy-MM-dd}-%i.log">
from https://stackoverflow.com/questions/35559824/spring-profiles-different-log4j2-configs by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 스프링 배치의 그리드 크기 (0) | 2019.02.12 |
---|---|
[SPRING] ItemWriter에 보내기 전에 중복 된 항목을 필터링하는 방법을 일괄 처리하는 방법 (0) | 2019.02.12 |
[SPRING] GET 리디렉션에서 SessionAttributes가 지워지는 이유는 무엇입니까? (0) | 2019.02.12 |
[SPRING] 항목 작성기없이 스프링 배치 단계를 작성하는 방법 (0) | 2019.02.11 |
[SPRING] 몇 가지 웹 응용 프로그램간에 보안 컨텍스트 공유 (0) | 2019.02.11 |