본문 바로가기
Java

log4j2 variable UNDEFINED

by lms0806 2025. 2. 25.
728x90
반응형

log4j2를 사용하다보면, log4j2에서 사용한 변수들을 System.properties를 통하여 주입하지 않은 경우 해당 값을 인식하지 못하여 UNDEFINED를 발생하게 된다.

해당 포스팅에서는 logPath를 지정하지 못한 경우 발생하는 logPath_IS_UNDEFINED라는 폴더가 생성되는데, 이를 처리하는 다양한 방식들에 대하여 포스팅해보고자 한다.

상황

  1. log4j2.xml을 통하여 log를 작성해야함
  2. log4j2.xml에는 logPath를 지정하는 appender와 지정하지 않은 appender가 존재함
  3. logPath를 지정하지 않는 appender만 사용해야 하는 상황이 존재함

1. log4j2.xml 2개

logPath를 지정하는 경우에는 log4j2-logPath.xml이라는 파일을 만들고 해당 파일을 보도록 다음 함수를 통하여 지정합니다.

  • logPath를 사용하는 경우
    System.setProperties("logging.configuration", "classpath:log4j2-logPath.xml");
  • logPath를 사용하지 않는 경우
    System.setProperties("logging.configuration", "classpath:log4j2.xml");

장점

  1. logPath를 찾지 못하여 생성되는 logPath_IS_UNDEFINED가 절~대 생성될 수 없음

단점

  1. 각 변수들을 필요로 하는 케이스별로 log4j2.xml을 생성해야 함

2. logPath_IS_UNDEFINED 폴더 삭제

logPath를 지정한 후, 생성되는 logPath_IS_UNDEFINED 폴더를 삭제하여, 해당 폴더를 지우는 방식입니다.

장점

  1. 프로그램이 동작을 시작한 경우, 해당 폴더는 삭제되므로 관리를 하지 않아도 됨

단점

  1. Spring boot 환경에서는 해당 폴더를 삭제하더라도 app.run()을 수행하면 다시 폴더가 생성됨

3. Springprofile로 제어

<Springprofile/>

해당 로직을 통하여 특정 값이 설정되었을 때, 해당 값안에 있는 appenders를 사용하고, 설정되어 있지 않은 경우(default)에 다른 appenders를 사용하도록 설정하여 관리할 수 있음

장점

  1. 1개의 log4j2.xml을 통하여 관리 가능
  2. 특정 케이스별로 간단하게 처리가 가능

    단점

  3. Spring-boot-starter-log4j2를 사용하는 경우에만 사용 가능
728x90
반응형

'Java' 카테고리의 다른 글

JAVA에서의 Boyer-Moore  (0) 2024.06.23
.yaml 파일 수정하기  (0) 2024.05.12
객체 비교  (1) 2024.04.02

댓글