728x90
반응형
log4j2를 사용하다보면, log4j2에서 사용한 변수들을 System.properties를 통하여 주입하지 않은 경우 해당 값을 인식하지 못하여 UNDEFINED를 발생하게 된다.
해당 포스팅에서는 logPath를 지정하지 못한 경우 발생하는 logPath_IS_UNDEFINED라는 폴더가 생성되는데, 이를 처리하는 다양한 방식들에 대하여 포스팅해보고자 한다.
상황
- log4j2.xml을 통하여 log를 작성해야함
- log4j2.xml에는 logPath를 지정하는 appender와 지정하지 않은 appender가 존재함
- 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");
장점
- logPath를 찾지 못하여 생성되는 logPath_IS_UNDEFINED가 절~대 생성될 수 없음
단점
- 각 변수들을 필요로 하는 케이스별로 log4j2.xml을 생성해야 함
2. logPath_IS_UNDEFINED 폴더 삭제
logPath를 지정한 후, 생성되는 logPath_IS_UNDEFINED 폴더를 삭제하여, 해당 폴더를 지우는 방식입니다.
장점
- 프로그램이 동작을 시작한 경우, 해당 폴더는 삭제되므로 관리를 하지 않아도 됨
단점
- Spring boot 환경에서는 해당 폴더를 삭제하더라도 app.run()을 수행하면 다시 폴더가 생성됨
3. Springprofile로 제어
<Springprofile/>
해당 로직을 통하여 특정 값이 설정되었을 때, 해당 값안에 있는 appenders를 사용하고, 설정되어 있지 않은 경우(default)에 다른 appenders를 사용하도록 설정하여 관리할 수 있음
장점
- 1개의 log4j2.xml을 통하여 관리 가능
- 특정 케이스별로 간단하게 처리가 가능
단점
- Spring-boot-starter-log4j2를 사용하는 경우에만 사용 가능
728x90
반응형
'Java' 카테고리의 다른 글
JAVA에서의 Boyer-Moore (0) | 2024.06.23 |
---|---|
.yaml 파일 수정하기 (0) | 2024.05.12 |
객체 비교 (1) | 2024.04.02 |
댓글