복붙노트

[SPRING] Spring 프로필, 다른 Log4j2 구성

SPRING

Spring 프로필, 다른 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. ==============================

    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. ==============================

    2.Log4j 2 Configuration 매뉴얼 페이지를 참고하십시오 :

    Log4j 2 Configuration 매뉴얼 페이지를 참고하십시오 :

    Log4j2는 classpath에서 log4j2-test.yaml이라는 파일을 찾은 다음 JSON과 XML에서 동일한 파일을 찾은 다음 클래스 패스에서 log4j2.yml이라는 파일을 찾습니다.

    구성 파일 위치를 명시 적으로 지정할 수도 있습니다.

  3. ==============================

    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. ==============================

    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"> 
    
  5. from https://stackoverflow.com/questions/35559824/spring-profiles-different-log4j2-configs by cc-by-sa and MIT license