log4jdbc 설정 오류

Kim jisu·2024년 8월 19일
0

 Debugging Note

목록 보기
1/37
post-thumbnail

1. 제목 및 날짜

제목: log4jdbc 설정 오류로 인한 애플리케이션 배포 실패
날짜: 2024년 8월 15일

2. 문제 설명

문제 발생 상황:

웹 애플리케이션을 배포하려고 할 때, StandardContext.startInternal에서 오류가 발생하여 컨텍스트가 시작되지 않았습니다. 그 결과, 애플리케이션이 정상적으로 배포되지 않았습니다.
JDBC 드라이버가 제대로 제거되지 않아 메모리 누수 가능성 경고 메시지도 발생했습니다.


발생한 오류 메시지는 아래와 같습니다:

19-Aug-2024 14:52:11.620 SEVERE [RMI TCP Connection(2)-127.0.0.1] org.apache.catalina.core.StandardContext.startInternal 하나 이상의 리스너들이 시작하지 못했습니다. 상세 내역은 적절한 컨테이너 로그 파일에서 찾을 수 있습니다.
19-Aug-2024 14:52:11.636 SEVERE [RMI TCP Connection(2)-127.0.0.1] org.apache.catalina.core.StandardContext.startInternal 이전 오류들로 인해 컨텍스트 []의 시작이 실패했습니다.
19-Aug-2024 14:52:11.647 WARNING [RMI TCP Connection(2)-127.0.0.1] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesJdbc 웹 애플리케이션 [ROOT]이(가) JDBC 드라이버 [net.sf.log4jdbc.sql.jdbcapi.DriverSpy]을(를) 등록했지만, 웹 애플리케이션이 중지될 때, 해당 JDBC 드라이버의 등록을 제거하지 못했습니다. 메모리 누수를 방지하기 위하여, 등록을 강제로 제거했습니다.
[2024-08-19 02:52:11,655] 아티팩트 Gradle : org.scoula : secserver-1.0-SNAPSHOT.war: 아티팩트 배포 중 오류가 발생했습니다. 자세한 내용은 서버 로그를 참조하세요.코드를 입력하세요

재현 방법:

log4jdbc 설정 파일에 오타가 있는 상태에서 애플리케이션을 배포합니다.
애플리케이션이 배포되지 않으며, 위와 같은 오류 메시지가 출력됩니다.

3. 원인 분석

원인: log4jdbc 설정 파일에 오타가 있어서 JDBC 드라이버가 제대로 로드되지 못함.
log4jdbc.dricers=com.mysql.cj.jdbc.Driver를 log4jdbc.drivers=com.mysql.cj.jdbc.Driver로 수정했습니다.

4. 해결:

log4jdbc 설정 파일의 오타를 수정함으로써 문제를 해결.

5. 오류 메세지 트래킹

1.오타로 인한 설정 오류:

설정 파일에서 log4jdbc.dricers=com.mysql.cj.jdbc.Driver라고 잘못 입력되어 있습니다. dricers는 올바른 설정 키워드가 아니기 때문에 log4jdbc 라이브러리가 이를 인식하지 못합니다.
올바른 설정 키워드는 log4jdbc.drivers입니다. 이 설정이 제대로 되어야만 log4jdbc가 지정된 JDBC 드라이버(com.mysql.cj.jdbc.Driver)를 로드하고 사용할 수 있습니다.

2.컨텍스트 시작 실패:

log4jdbc가 제대로 설정되지 않으면, 애플리케이션이 JDBC 드라이버를 올바르게 초기화하지 못하고, 이로 인해 컨텍스트 시작이 실패하게 됩니다. 이는 StandardContext.startInternal 메서드가 문제를 감지하고 컨텍스트 시작을 중단하게 만듭니다.
이 오류는 애플리케이션이 제대로 동작할 수 없는 상태임을 나타내며, 애플리케이션이 예상대로 동작하지 않는 주요 원인이 됩니다.

3. 메모리 누수 경고:

잘못된 설정으로 인해 JDBC 드라이버가 올바르게 로드되지 않거나 해제되지 않는 경우, 웹 애플리케이션이 중지될 때 해당 드라이버의 등록이 해제되지 않아 메모리 누수가 발생할 수 있습니다.
서버는 이러한 메모리 누수를 방지하기 위해 강제로 JDBC 드라이버 등록을 제거합니다. 이 과정에서 경고 메시지가 출력됩니다.

결론적으로, 이 오류 메시지가 나타나는 이유는 설정 파일의 오타로 인해 JDBC 드라이버가 올바르게 로드되지 않아 애플리케이션의 초기화와 실행이 실패했기 때문에 위와 같은 에러메세지가 뜨게 된 것.

6. 교훈 및 개선 사항

배운 점:
error massage가 생각보다 친절하지 않다.
오타에 주의....

profile
Dreamer

0개의 댓글