sourcecode

스프링 프로파일, 다양한 Log4j2 구성

codebag 2023. 6. 22. 21:50
반응형

스프링 프로파일, 다양한 Log4j2 구성

내 애플리케이션.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로는 불가능하다고 생각합니다.

참조:Boot Logging Level에 제가 시도하는 것처럼 가능해야 한다고 되어 있습니까?

나는 yamlone 대신 properties file을 사용하고 있습니다.저는 두 개의 로그 파일을 원했습니다. 하나는 콘솔에 모든 것을 기록하는 것이고 다른 하나는 파일에 기록하는 것입니다.그래서 저는 log4j2-dev.xml과 log4j2-file.xml 두 개의 log4j2 구성 파일을 만들었습니다.

저는 두 개의 Spring 프로파일을 사용합니다. 기본 프로파일과 "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.dev.active="의 값으로 "dev"를 추가하기만 하면 됩니다.

이 페이지에서 Feiyu Zhou의 답변을 볼 수 있습니다.그는 Yaml 구성 파일을 사용하여 솔루션을 제시합니다.application.properties를 사용하여 log4j2 경로를 정의하는 방법은 무엇입니까?

물론 application.properties의 logging.config 속성을 제거하고 log4j2.xml에서 log4j2-file.xml의 이름을 변경할 수 있습니다.스프링 프로파일에 의해 트리거될 필요 없이 Log4j2에 의해 기본적으로 로드됩니다.

활성 프로파일을 명시적으로 설정해야 하는 스프링 프로파일을 사용하는 대신 Maven 빌드 프로파일을 사용하여 로그 4j2 구성 파일 간을 전환할 수 있습니다.

application.yml

logging:
    config: classpath:${log4j2.config}

pom.xml

<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)을 사용할 수 있습니다.

그리고 두구성 파일(xml)은가 그리테파일은(log4j2-local.xml)와 함께 빌드될 개발/할 수 .local 프로파일 빌드프예일파로):mvn package -Plocal).

여기 스프링 부트 2 및 log4j2.xml과 함께 작동한 솔루션이 있습니다. application-local.properties, application-dev.properties와 같은 파일이 서로 다른 환경과 프로필에 있는지 확인하십시오.

src/main/resources 폴더에 log4j2.xml을 보관하지 말고 src/main/resources/local src/main/resources/dev 등으로 src/main/resources 아래에 생성된 프로파일별 폴더 아래에 보관해야 합니다.그런 다음 application-local.properties의 logging.config: classpath: local/log4j2.xml과 application-dev.properties의 logging.config: classpath: dev/log4j2.xml과 같은 항목을 만듭니다.

또한 log4j2.xml을 같은 파일 이름의 각 폴더에 보관하고 응용 프로그램이 기본적으로 원하지 않는 파일을 선택하므로 다시는 src/main/dll 아래에 보관하지 않습니다.환경별로 서로 다른 xml이 작동해야 하는 경우 각각의 구성이 서로 다릅니다.또한 제공된 profile 인수를 사용하여 스프링 부트를 실행합니다.

env specific properties entry

run application for the env or profile needed

그런 다음 아래와 같이 환경에 따라 로그 파일 경로를 수정할 수 있습니다.

    <RollingFile name="RollingFileAppender" fileName="c:\\logs\\logs_test\\og4j2-demo.log"  filePattern="c:\\logs\\logs_test\\log4j2-demo-%d{yyyy-MM-dd}-%i.log"> 

Log4j2 Configuration manual 페이지도 참조하십시오.

Log4j2는 먼저 다음 파일을 찾으려고 합니다.log4j2-test.yaml클래스 경로에서 JSON과 XML에 대해 동일하고 마지막으로 파일을 찾습니다.log4j2.yml교실에서

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

application.yml이 올바르게 구성된 것 같습니다.아마도 문제는 log4j2.yml을 사용하기 위해 pom에 의존성 jackson-databind와 jackson-dataformat-yaml을 추가해야 하기 때문일 것입니다.

spring-boot-starter-web이 있는데 jackson-databind를 이미 가져온 경우 jackson-dataform-yaml만 있으면 됩니다.

<dependencies>
  <!-- not needed if you have spring-boot-starter-web in the classpath -->
  <dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
  </dependency>

  <dependency>
    <groupId>com.fasterxml.jackson.dataformat</groupId>
    <artifactId>jackson-dataformat-yaml</artifactId>
  </dependency>
</dependencies>

xml 파일을 사용하여 log4j2를 구성했습니다.제게 효과가 있었던 것은 다음을 추가하는 것이었습니다.@Component와 함께@PostConstruct로깅을 재구성한 방법:

LoggerContext context = (LoggerContext)LogManager.getContext(false);
context.setConfigLocation(URI.create("path to file"));
context.reconfigure();

파일의 경로는 다음과 같습니다.classpath:log4j2-(insert spring profile here).xml이를 위해, 저는 제외해야 했습니다.spring-boot-starter-logging대신 포함합니다.spring-boot-starter-log4j2저는 이 log4j2 구성을 작동시키기 위해 오랜 시간을 들여서 다른 사람에게 도움이 될 수도 있습니다.

언급URL : https://stackoverflow.com/questions/35559824/spring-profiles-different-log4j2-configs

반응형