괴발개발 개발하다
[ Spring ] 스프링 Log4jdbc-log4j2 추가 및 설정방법 본문
1. Log4jdbc-log4j2 사용 이유
Log4jdbc는 스프링에서 SQL문을 실행한 로그를 효과적이고 직관적으로 볼 수 있도록 해주는 라이브러리이다.
MyBatis는 내부적으로 JDBC의 PreparedStatement를 이용해서 SQL을 처리함. 따라서 SQL에 전달되는 파라미터는 JDBC에서와 같이 ‘?’로 치환되어서 처리됨. 복잡한 SQL의 경우 ‘?’로 나오는 값이 제대로 되었는지 확인하기가 쉽지 않고 실행된 SQL의 내용을 정확히 확인하기는 어려움. 이런 문제를 해결하기 위해 SQL을 변환해서 PreparedStatement에 사용된 ‘?’가 어떤 값으로 처리되었는지 확인하는 기능을 추가해야 함. SQL 로그를 제대로 보기 위해서는 Log4jdbc-log4j2 라이브러리를 사용해야 한다.
- Log4jdbc 사용 전
- Log4jdbc 사용 후
2. Log4jdbc-log4j2 추가 및 설정 방법
Log4jdbc를 사용하기 위해선 라이브러리 추가, 로그 설정 파일 추가, JDBC 연결 정보 수정이 필요합니다.
1) pom.xml - 라이브러리 추가
<!-- https://mvnrepository.com/artifact/org.bgee.log4jdbc-log4j2/log4jdbc-log4j2-jdbc4 -->
<dependency>
<groupId>org.bgee.log4jdbc-log4j2</groupId>
<artifactId>log4jdbc-log4j2-jdbc4</artifactId>
<version>1.16</version>
</dependency>
2) 로그 설정 파일 추가
가. 'src/main/resources' 경로에 log4jdbc.log4j2.properties 파일을 생성한다.
- 검색창에 untitled 검색 >> Untitled Text File 클릭 >> Finish
- 저장 위치를 본인이 직접 클릭해 가며 지정할 수 있다.
- src >> main >> resources 순으로 클릭 후, File name을 log4jdbc.log4j2.properties 로 설정한다.
- 내용에는 아래의 코드를 작성해준다.
log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
** 테스트 시, 오류 예방을 위해 src/test/resources 에도 log4jdbc.log4j2.properties를 복붙해준다.
나. 결과 화면
3) JDBC의 연결 정보 설정
가. root-context.xml 에서 기존 JDBC 드라이버와 URL 정보를 수정해주어야 한다. 기존에 있던 JDBC 드라이버, URL 정보는 삭제 혹은 주석처리해준다.
- driverClassName 값을 "net.sf.log4jdbc.sql.jdbcapi.DriverSpy"로 변경해준다.
- jdbcUrl 경우 값을 기존 경로 중간에 log4jdbc 문자열을 추가해준다.
<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
/* 주석처리 or 삭제
<!-- <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property>
<property name="jdbcUrl" value="jdbc:oracle:thin:@localhost:1521:XE"></property>-->
*/
<property name="driverClassName" value="net.sf.log4jdbc.sql.jdbcapi.DriverSpy"></property>
<property name="jdbcUrl" value="jdbc:log4jdbc:oracle:thin:@localhost:1521:XE"></property>
<property name="username" value="pky"></property>
<property name="password" value="pky"></property>
</bean>
나. 결과 화면
< 참고 >
https://kimvampa.tistory.com/63?category=800652
'spring' 카테고리의 다른 글
[ Spring ] 스프링 Error Page (에러 페이지) 설정 (0) | 2022.07.10 |
---|---|
[ Spring ] 스프링 log 레벨 설정 (0) | 2022.07.09 |
[ Spring ] 스프링 MyBatis 사용 예시(Mapper 인터페이스, Mapper XML) (0) | 2022.07.09 |
[ Spring ] 스프링 MyBatis 라이브러리 추가, SQLSessionFactory 설정 (0) | 2022.07.08 |
[ Spring ] 스프링 JDBC, MYBATIS 차이 (0) | 2022.07.08 |