zepinos
17k
2019-01-11 14:18:09
5
272

logback 에서 root 에서 Console 출력중인 것을 하위에서 더 이상 출력하지 않을 수 있을까요?


Logback 에서 <root> 에 level 을 off 로 하지 않고 <appender-ref> 을 별도로 지정하지 않거나 별도의 standard out 을 지정해서 출력할 경우 콘솔에서 메세지가 출력됩니다.


그런데, 특정 패키지의 로그 메세지는 로그로 출력하기엔 너무 길고, 그렇다고 파일로 보관하지 않기에는 문제가 있는 것들이 있을 수 있습니다. 그런 경우 <logger> 로 패키지를 지정해주고 파일 저장을 위한 <appender-ref> 을 지정하면 <root> 의 설정을 상속받아서 콘솔로도 로그가 출력되는데요.


상위 <appender-ref> 을 비활성 시키거나 <logger> 등의 지정 시 상위의 것을 상속받지 않는 방법이 있을까요? additivity=false 로 <root> 을 설정하는 건 너무 번거로울 것 같아서요.


조언 부탁드립니다.

0
0
  • 답변 5

  • 수평선
    1k
    2019-01-11 14:30:48

    글세요..additivity="false" 를 root에 지정하지 않고 보통은 이렇게 쓰지 않나요?

    <logger name="com.foo.bar" level="DEBUG" additivity="false"> 

    <appender-ref ref="SERVICE_LOG" />

    </logger>

    1
  • zepinos
    17k
    2019-01-11 14:39:10

    수평선 님 // 제가 옵션을 잘못 알고 있는 걸까요...

    additivity="false" 옵션은 하위 전파를 하지 않는 옵션 아닌가요? 그러니까...com.foo.bar 에만 적용...

    즉, root 에서 선언되어 사용중인 Console 출력 같은게 있으면 여전히 영향을 받는거 아닌가요?

    0
  • 수평선
    1k
    2019-01-11 14:44:31

    additivity="false" 옵션은 상위 전파를 하지 않는 옵션입니다. 반대로 알고 계셨네요..^^

    여기글을 참고하시면 도움이 되실것 같습니다.

    http://seosh81.info/?p=404

    1
  • zepinos
    17k
    2019-01-11 15:02:39

    컥...제가 반대로 알고 있었네요.


    알려주신 수평선 님, jslovers 님...고맙습니다!

    0
  • jslovers
    1k
    2019-01-11 15:06:58 작성 2019-01-11 15:08:00 수정됨

    zepinos logback 사이트의 설정 문서에서 발췌한 내용이 더 정확한거 같아서 제 댓글은 지웠습니다.

    In case the default cumulative behavior turns out to be unsuitable for your needs, you can override it by setting the additivity flag to false. Thus, a branch in your logger tree may direct output to a set of appenders different from those of the rest of the tree.

    Additivity 설정

    1
  • 로그인을 하시면 답변을 등록할 수 있습니다.