2014-01-06 2 views
0

사용자 정의 slf4j 구현을 사용하는 웹 응용 프로그램이 있다고 가정합니다. 하지만 약간의 성능상의 이유로 사용자 정의 slf4j 구현을 (log4j/logback 등) slf4j 구현으로 전환해야합니다.slf4j 로거 구현 1을 런타임시 구현 2로 전환하는 방법

한 가지 방법은 classpath에서 사용자 정의 slf4j jar를 제거하고 log4j/logback jar를 추가하고 응용 프로그램을 재배포 할 수 있다는 것입니다.

하지만 런타임에이를 변경할 수 있습니까?

답변

0

일부 극단적 인 Java reflection hackery를 제외하고는 slf4j에서는 불가능합니다.

이를 달성하려면 클래스 경로에 여러 개의 slf4j 구현 jar가 필요합니다. 그러나 slf4j는 정확히 하나의 구현이 존재할 것으로 기대합니다. 둘 이상을 찾으면 경고 메시지를 출력하고 찾은 첫 번째 메시지를 선택합니다. JVM 구현 및 classpath에 jar의 순서를 포함하는 여러 가지 요소에 따라 달라 지므로 어떤 구현을 선택할지 예측하기가 어렵습니다.

요약하면, 아니오, slf4j는 이러한 방식으로 작동하도록 설계되지 않았습니다.