일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 루프
- maven
- suvlet
- Scanner
- 무한
- 내장객체
- wrapper
- 스프링
- 컬렉션
- bootstrap
- start.spring.io
- Short
- dependency
- 인텔리제이
- 클래스
- boxing
- 메소드
- 콜렉션
- 언박싱
- Jenkins
- https://start.spring.io
- 빌드
- 박싱
- Java
- 싱글턴
- 싱글톤
- unboxing
- 제너릭
- 자동형변환
- 제네릭
Archives
- Today
- Total
Developer Gonie
[logback] 동일한 로그가 의도치않게 2번 연속 찍히는 문제해결 본문
문제상황
com.kt.smcp.core.apigateway.service, com.kt.smcp.core.apigateway.relay
위 두 패키지 내에 존재하는 클래스에서 로그를 찍으면 동일한 로그가 의도치않게 2번 연속 찍히는 문제가 발생함
문제를 발생시킨 코드 및 원인
문제의 원인은 logger 가 root의 속성을 상속받게 되어있는데
이미 STDOUT 관련된게 존재하는 상태에서 root의 STDOUT 관련 속성을 상속받다보니 생긴 문제이다.
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{20}.%M\(%line\) - %msg%n
</pattern>
</encoder>
</appender>
<logger name="com.kt.smcp.core.apigateway.service">
<level value="INFO" />
<appender-ref ref="STDOUT" /> <!-- 문제발생의 원인 -->
</logger>
<logger name="com.kt.smcp.core.apigateway.relay">
<level value="TRACE" />
<appender-ref ref="STDOUT" /> <!-- 문제발생의 원인 -->
</logger>
<root level="INFO">
<appender-ref ref="STDOUT" />
<appender-ref ref="SERVICE_LOG" />
</root>
해결책1
* additivity="false" 속성을 추가해줌으로써 root 의 속성을 상속받지 않게 하는 방법
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{20}.%M\(%line\) - %msg%n
</pattern>
</encoder>
</appender>
<logger name="com.kt.smcp.core.apigateway.service" additivity="false">
<level value="INFO" />
<appender-ref ref="STDOUT" />
</logger>
<logger name="com.kt.smcp.core.apigateway.relay" additivity="false">
<level value="TRACE" />
<appender-ref ref="STDOUT" />
</logger>
<root level="INFO">
<appender-ref ref="STDOUT" />
<appender-ref ref="SERVICE_LOG" />
</root>
해결책2
어차피 상속받는걸 남겨둘 필요가 없으므로 각각의 logger 에서 STDOUT 관련 속성을 제거하는 방법
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{20}.%M\(%line\) - %msg%n
</pattern>
</encoder>
</appender>
<logger name="com.kt.smcp.core.apigateway.service">
<level value="INFO" />
</logger>
<logger name="com.kt.smcp.core.apigateway.relay">
<level value="TRACE" />
</logger>
<root level="INFO">
<appender-ref ref="STDOUT" />
<appender-ref ref="SERVICE_LOG" />
</root>
참고 링크:
Comments