스프링 log4jdbc 설정

Jiwon Park·2023년 4월 8일
0

logging

  • jdbc.sqlonly : SQL문만을 로그로 남기며, PreparedStatement일 경우 관련된 argument 값으로 대체된 SQL문이 보여진다.
  • jdbc.sqltiming : SQL문과 해당 SQL을 실행시키는데 수행된 시간 정보(milliseconds)를 포함한다.
  • jdbc.audit : ResultSet을 제외한 모든 JDBC 호출 정보를 로그로 남긴다. 많은 양의 로그가 생성되므로 특별히 JDBC 문제를 추적해야 할 필요가 있는 경우를 제외하고는 사용을 권장하지 않는다.
  • jdbc.resultset : ResultSet을 포함한 모든 JDBC 호출 정보를 로그로 남기므로 매우 방대한 양의 로그가 생성된다.
  • jdbc.resultsettable : SQL 결과 조회된 데이터의 table을 로그로 남긴다.
  • jdbc.connection : 열려있는 모든 번호와 연결 수립 및 해제 이벤트를 기록. 이는 연결 문제를 찾아내는데 매우 유용 (Connection Pool 설정)

로그레벨

ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF

TRACE : 추적 레벨은 Debug보다 좀더 상세한 정보를 나타냄
DEBUG : 프로그램을 디버깅하기 위한 정보 지정
INFO : 상태변경과 같은 정보성 메시지를 나타냄
WARN : 처리 가능한 문제, 향후 시스템 에러의 원인이 될 수 있는 경고성 메시지를 나타냄
ERROR : 요청을 처리하는 중 문제가 발생한 경우
FATAL : 아주 심각한 에러가 발생한 상태, 시스템적으로 심각한 문제가 발생해서 어플리케이션 작동이 불가능할 경우


1.pom.xml 주입

	<dependency>
		<groupId>org.bgee.log4jdbc-log4j2</groupId>
		<artifactId>log4jdbc-log4j2-jdbc4.1</artifactId>
		<version>1.16</version>
	</dependency>

2.log4jdbc.log4j2.properties

log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
log4jdbc.dump.sql.maxlinelength=0

#사용 드라이버 명시적 지정(미지정시 log4jdbc는 기본으로 com.mysql.jdbc.Driver를 사용한다.)
log4jdbc.auto.load.popular.drivers=false
log4jdbc.drivers=com.mysql.cj.jdbc.Driver 

3.log4j2.xml(or logback.xml)에 추가

<!--log4jdbc loggers -->
		<Logger name="jdbc.sqlonly" level="info" additivity="false">
			<AppenderRef ref="console" />
		</Logger>
		<Logger name="jdbc.sqltiming" level="debug" additivity="false">
			<AppenderRef ref="console" />
		</Logger>
		<Logger name="jdbc.audit" level="off" additivity="false">
			<AppenderRef ref="console" />
		</Logger>
		<Logger name="jdbc.resultset" level="off" additivity="false">
			<AppenderRef ref="console" />
		</Logger>
		<Logger name="jdbc.resultsettable" level="debug" additivity="false">
			<AppenderRef ref="console" />
		</Logger>
		<Logger name="jdbc.connection" level="warn" additivity="false">
			<AppenderRef ref="console" />
		</Logger>

4.root-context.xml

	<!--<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"></property>
	<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/springbasic?useUnicode=true&amp;characterEncoding=utf8&amp;serverTimezone=UTC"></property>
	-->
	<property name="driverClassName" value="net.sf.log4jdbc.sql.jdbcapi.DriverSpy"></property>
	<property name="jdbcUrl" value="jdbc:log4jdbc:mysql://localhost:3306/springbasic?useUnicode=true&amp;characterEncoding=utf8&amp;serverTimezone=UTC"></property>
	<property name="username" value="jiwon"></property>
	<property name="password" value="1234"></property>
</bean>
profile
안녕하세요

0개의 댓글