2016년 12월 12일 월요일

[Java] Logger 라이브러리 구조 및 유의 사항

 Log4J를 사용하다가 오래된 로그 지우는 기능을 사용하기 위하여 기존 Log4J를 걷어 내고 Logback으로 Logger를 변경하게 되었다.
이때 Logging 라이브러리 관련해서 이해한 내용을 정리 하였다.

로그 프레임 워크를 보면 아래와 같은 순서로 진행되게 된다. 

    1. 어플리케이션에서 사용하는 로거를 브릿지를 통해서  SLF4J 형식으로 변환한다. 
    2. SLF4J로 변환된 로그를 원하는 로깅 라이브러리로 바인딩하여 사용한다. 

이를 통해서 다양한 형식으로 로깅 방식을  SLF4J 로 통합하고 자신에게 맞는 로깅 라이브러리로 쉽게 바인딩 하여 사용 할 수 있도록  되어 있다. 

구성요소는 아래와 같이 4가지로 되어 있다. 

Application -> Bridge -> Interface -> Binding -> Logger

이 때 주의 할 점은  Bridge 에서 변환되는 로그와 Binding 에서 연동하는 로그의 타입이 같으면 안된다.
만약 같게 되는 경우 Binding -> Bridge 방향으로 다시 로그가 흘러가 무한 루프에 빠지게 된다.

예를 들면 log4j-over-slf4j 브릿지를 쓰고 slf4j-log4j 바인더를 사용하게 되는 경우
    Application -> Bridge -> Interface -> Binding ->[ Bridge -> Interface ->Binding ->] .... 
이런식으로 무한 루프에 빠져 오류가 발생하게 된다.

댓글 없음:

댓글 쓰기