log4j2 설정 이해(loggers, level)
Loggers
- 로깅 작업의 주체, 각 패키지 별, 로그 정책을 설정 할 수 있다.
- <Loggers> : 하위 요소로 <Root>, <logger> 가 존재한다.
- <Root> : 일반적인 로그 정책에 대해 정의를 할 수 있으며, 반드시 한개를 정의해야한다.
- <Logger> : 여러개 정의를 할수 있으며 name에 정의하는 패키지 범위를 설정 할 수 있다.
- <AppenderRef> : 위에 정의한 Appender 의 참조를 지정 한다. Root, Logger 태그 안에서만 사용가능
- name : 로그의 name, 로그를 정의할 패키지의 범위
- level : 로그의 Level(위에 log level 참고)
- additivity : 중복로깅여부
- OFF
가능한 가장 높은 순위이며 로깅을 해제 - FATAL
조기 종료를 유발하는 심각한 오류. 콘솔에 즉시 표시 될 것으로 예상 - ERROR
런타임 오류 또는 예기치 않은 조건. 콘솔에 즉시 표시 - ̶W̶A̶R̶N̶
더 이상 사용되지 않는 API 사용, ‘거의’오류에 가까운 상황.
상태 콘솔에 즉시 표시 - INFO
런타임 이벤트. 콘솔에 즉시 보일 것으로 예상되므로 보수적이며 최소한으로 유지 - DEBUG
시스템을 통한 흐름에 대한 자세한 정보.
로그에만 쓰여질 것으로 예상, 일반적으로 응용 프로그램에서 기록한 대부분의 줄은 DEBUG로 작성. - TRACE
가장 자세한 정보. 이것들은 로그에만 쓰여질 것으로 예상됩니다.
https://pakss328.medium.com/log4j2-xml-%EC%84%A4%EC%A0%95-a3aa0d1bea2f
대개 DEBUG INFO WARN ERROR FATAL만 사용하는 듯 하다.
configuration status = "DEBUG"
log4j2.xml 의 내부 설정을 로드하면서 발생하는 DEBUG 이상의 로그들을 출력중이다.
status를 info로 설정하면 아~~~무 로그도 출력되지 않는다.
그 이유는 log4j2.xml 설정파일을 로드할 때의 정보는 내부적으로 DEBUG레벨로 찍고 있기 때문이다.
INFO 레벨은 DEBUG레벨보다 상위의 레벨이기 때문에 로그가 찍히지 않게 된다.
그렇다면 log4j2.xml 파일을 로드할 때 문제가 생기도록 코드를 바꾼 후 status를 info로 설정한다면?
내부적으로 error 로그가 발생할 것이고, 이는 info 레벨보다 높기 때문에 로그가 찍힐 것이다.
테스트로 5번줄의 Appenders 태그 명을 Appenderss로 바꾼 후 실행시켰다.
제일 아랫줄의 ERROR test.LogTest 부분이 log4j2.xml 을 로드하면서 생긴에러이다.
configuration status ="info" And Appenders -> Appenderss
https://tlatmsrud.tistory.com/32