log4j 멀티classloader 중복 불러오기 설정 문제 해결
1555 단어 GWT/GXT
오류 정보가 뚜렷합니다.log4j는 두 개의 다른classloader에 의해 두 번 초기화되어 결과가 틀렸습니다.이 문제는 해결하기 어렵지 않다. 주로 두 가지 수단이 있다. 첫째, 설정을 늘리고log4j가 다른classloader의 초기화를 무시하도록 한다.log4j 프로필에 추가
-XX:MaxPermSize=512m -Xmx512m -Denv=DEV -Dlog4j.ignoreTCL=true
됐어.일부 버전의 log4j 오류 정보에서는 다음 웹 주소도 언급됩니다.http://logging.apache.org/log4j/1.2/faq.html, 위의 속성에 대한 소개가 있습니다.둘째, 로그4j 라인을 초기화하는classloader를 수정합니다.log4j는 현재 라인 상하문의classloader로 설정을 초기화합니다. 그래서 제 샌드박스 응용 프로그램에서log4j의jar는 URLClassLoader에 의해 불러왔지만 불러오는 라인은 WebApp에 있는 라인인지 WebApp의 ClassLoader에 있는 라인인지 위의 알림 메시지가 나타납니다.따라서 우리는 다음 코드를 통과해야 한다.
Thread.currentThread().setContextClassLoader(urlclassLoader);
현재 스레드의 컨텍스트 로더를 샌드박스의 ClassLoader로 변경하면 됩니다.
두 가지 해결 방식을 너는 필요에 따라 선택할 수 있다.