동일 패키지 내에서 Console 로그 출력은 info 레벨부터, File에 로그 저장은 Error 레벨만 하고 싶은 경우가 있다.
이럴 때 좋은 문제 해결 방법을 찾았다.
앞서 설명했듯이 file 에는 ERROR 로그만 저장하고 콘솔에는 Info 레벨부터 출력하고 싶을 때가 있다. 그리고 해당 작업을 프로젝트의 전체 패키지 내에서 진행하고 싶은 경우에 단순히 logback.xml 에서 동일한 이름의 <logger> 들을 생성해서는 해결되지 않았다.
위 사진처럼 org.xxx.basic 패키지에서 STDOUT 이라는 콘솔 출력 로그는 info 레벨부터, org.xxx.basic 패키지에서 ROLLING_FILE 이라는 파일 출력 로그는 error 레벨부터 수행하도록 logback.xml 을 꾸미면 될 줄 알았는데 안됐다.
아마도, 동일 패키지 내에 level이 다르게 있는 경우 높은 레벨의 것을 수행하는 것으로 추측된다.
따라서, 이를 처리하기 위한 다른 방법이 필요했고 조사해본 결과 filter 가 이 문제를 해결할 수 있었다.
위 사진처럼 <filter> 를 통해서 appender에 대한 level을 지정해주고 동일 패키지에 대해 넣어주면 자신의 레벨 이상의 로그들만 처리할 수 있다.
결과
콘솔에는 Info 레벨부터 출력했고 위의 빨간 글씨인 에러는 file로 저장되었다.
출처
'개인 공부' 카테고리의 다른 글
당근마켓 클론코딩 - 게시글 검색 기능 구현을 위한 실험 (1) | 2023.02.08 |
---|---|
정적 팩토리 메서드 (0) | 2022.11.21 |
Garbage Collector 동작원리 (0) | 2022.11.01 |
프로토 타입 패턴 (0) | 2022.10.30 |
도커(Docker)와 가상머신(VM) (0) | 2022.10.28 |