728x90
STS Console 창에서 SQL 쿼리 Log를 자세히 출력을 위한 설정
<!-- Root Logger -->
<root>
<priority value="warn" /><!-- warn 에서 debug로 수정시 sql 확인 -->
<appender-ref ref="console" />
</root>
log4j.xml 에서 Root Looger 의 value를 debug로 수정할 경우 실행된 sql문을 확인 할수있으나
execute query : SELECT * FROM TABLE WHERE ID = ?
와 같이 실행된 쿼리문에 파라미터를 함께 표현하지 않는 점과,
미리 결과내용을 보지 못하는 점에서 불편함을 느낄수있다.
이때 아래와 같이 설정할 경우 자세한 sql 로그를 설정하여 출력할수있어 편리해진다.
1.pom.xml 의존성추가
<!-- SQL 로그 출력 -->
<!-- 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. root-context.xml (또는 dataSource-context.xml) 설정 변경
기존은 이와 같을것이다.
<bean class="org.springframework.jdbc.datasource.DriverManagerDataSource" id="dataSource">
<property name="driverClassName" value="org.mariadb.jdbc.Driver" />
<property name="url" value="jdbc:mariadb://127.0.0.1:3306/디비명" />
<property name="username" value="아이디" />
<property name="password" value="패스워드" />
</bean>
아래처럼 변경해준다.
<bean class="org.springframework.jdbc.datasource.DriverManagerDataSource" id="dataSource">
<property name="driverClassName" value="net.sf.log4jdbc.sql.jdbcapi.DriverSpy"></property>
<property name="url" value="jdbc:log4jdbc:mariadb://127.0.0.1:3306/디비명" />
<property name="username" value="아이디" />
<property name="password" value="비밀번호" />
</bean>
변경된 내용
- driverClassName value 변경
- url의 value를 변경
3. log4jdbc.log4j2.properties 파일 생성 및 설정
- src/main/resources 폴더에 log4jdbc.log4j2.properties 파일을 생성하고 아래 코드를 삽입 후 저장
log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
log4jdbc.drivers=org.mariadb.jdbc.Driver
4. log4j.xml 설정 추가
......................생략......................
<!-- SQL 로그 출력을 위한 설정 추가 시작 ----------------------------->
<logger name="jdbc.sqlonly" additivity="false">
<level value="info"/>
<appender-ref ref="console"/>
</logger>
<logger name="jdbc.sqltiming" additivity="false">
<level value="warn" />
<appender-ref ref="console"/>
</logger>
<logger name="jdbc.audit" additivity="false">
<level value="warn"/>
<appender-ref ref="console"/>
</logger>
<logger name="jdbc.resultset" additivity="false">
<level value="warn" />
<appender-ref ref="console"/>
</logger>
<logger name="jdbc.resultsettable" additivity="false">
<level value="info"/>
<appender-ref ref="console"/>
</logger>
<!-- SQL 로그 출력을 위한 설정 추가 끝 ----------------------------->
<!-- Root Logger -->
<root>
<priority value="warn" />
<appender-ref ref="console" />
</root>
</log4j:configuration>
Logger 설정값
logger name | 설명 |
jdbc.sqlonly | SQL문만을 로그로 남기며, PreparedStatement일 경우 관련된 argument 값으로 대체된 SQL문이 보여진다 |
jdbc.sqltiming | SQL문과 해당 SQL을 실행시키는데 수행된 시간 정보(milliseconds)를 포함한다. |
jdbc.audit | ResultSet을 제외한 모든 JDBC 호출 정보를 로그로 남김 모든(많은 양) 로그가 생성 되므로 필요시만 사용, 사용 권장 X |
jdbc.resultset | ResultSet을 포함한 모든 JDBC 호출 정보를 로그로 남김 많은 양의 로그가 생성 되므로 필요시만 사용 |
jdbc.resultsettable | SQL 결과 조회된 데이터의 table을 로그로 남김. |
logger level | 설명 |
degug | 디버그를 위한 용도로 일반 정보도 상세하게 출력 |
info | 상태 변경과 같이 일반적인 정보를 출력 |
wran | 경고성 메시지 (처리가능한 문제 또는 향후 에러의 원인이 될 수 있는 경고성 메시지) |
error | 일반적인 에러로 처리가 반드시 필요 |
fatal | 시스템적으로 아주 심각한 에러가 발생, 어플리케이션 작동 불가 |
출처: https://ninedc.tistory.com/entry/스프링spring에서-SQL-쿼리-Log-찍기 [기록하고 나누는 행복:티스토리]
728x90
'STUDY > SpringLegacy' 카테고리의 다른 글
[Spring] [JS] SSE (Server-Sent Events) 사용하기 (0) | 2024.05.21 |
---|---|
[Spring] Log4j2 설명 (0) | 2024.04.29 |
[Spring] Lombok 설치 및 STS 연동하기 (0) | 2024.04.24 |
[Spring] mybatis Parameter '파라미터명' not found 에러 (0) | 2024.04.24 |
[Spring] 정적 리소스(Static Resources) 설정 방법 (0) | 2024.04.24 |