tools & libs/로깅

[logging] logback 사용 시 로그 메시지 중복 출력 문제 처리

  • -

logback과 같은 logging 시스템을 사용할 때 패키지 별로 별도의 로거를 사용하기 위해서 아래와 같이 logger를 추가할 수 있다.

<root level="debug">
	<appender-ref ref="STDOUT" />
	<appender-ref ref="DAILYOUT" />
</root>
<logger name="xyz" level="debug">
	<appender-ref ref="DAILYOUT" />
	<appender-ref ref="SIMPLE_STDOUT" />
</logger>

즉 기본적으로는 info level의 log를 출력하고 xyz로 시작하는 패키지는 debug를 적용하고 싶다는 의도이다. 하지만 위와 같이 작업한 경우 슬프게도 log는 두 번씩 나오게 된다.

[Quietjun:] [DEBUG] [x.q.m.j.m.r.JusoRepository.parse- 57] 주소 정보: 20551 
[03-24 09:21:52] [DEBUG] [x.q.m.j.m.r.JusoRepository.parse- 57] 주소 정보: 20551

 

기본적으로 logback은 상위 logger(root)로 하위(name=xyz)의 속성들이 추가된다. 따라서 xyz에 의해서 한번 로그가 출력되고 root에서 한번 더 출력된다. (물론 이런 상하 관계가 없을 때는 상관 없다.)

이런 경우 additivity라는 속성을 이용해서 상위로 전파하지 말라는 설정을 할 수 있다.

<root level="info">
	<appender-ref ref="STDOUT" />
	<appender-ref ref="DAILYOUT" />
</root>
<logger name="xyz" level="debug" additivity="false">
	<appender-ref ref="DAILYOUT" />
	<appender-ref ref="SIMPLE_STDOUT" />
</logger>

이제 상위에 속성을 추가하지 않고 로그도 한번만 출력되는 것을 확인할 수 있다.

[Quietjun:] [DEBUG] [x.q.m.j.m.r.JusoRepository.parse- 57] 주소 정보: 20551

 

'tools & libs > 로깅' 카테고리의 다른 글

[logging] log4j2 설정 및 사용  (0) 2022.03.24
[logging] logback 설정 및 사용  (0) 2020.05.17
[logging] logging과 slf4j  (0) 2020.05.17
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.