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