새소식

반응형
Java/Spring

Spring Boot log4j2 설정하기 (Spring Boot3, HikariCP)

  • -
반응형

환경 : Spring Boot 3, HikariCP

Spring Boot 에서 DBCP 의 Connection Pool 에서 풀 안의 커넥션이 유효한지에 대한 쿼리문을 날리는데

그게 ValidationQuery 이다.

해당 쿼리문의 시간을 설정하고 로그로 확인하기 위해 작성하는 글이다.

 

1. pom.xml 에 log4j2 dependency 추가하기

<!--2.1 logging -->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>

 

2. Spring Boot 기본 logback 제외하기

Spring Boot 의 기본 log 라이브러리인 logback 을 제외시킨다.

<!-- Logback 제거 -->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter</artifactId>
  <exclusions>
    <exclusion>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-logging</artifactId>
    </exclusion>
  </exclusions>
</dependency>

 

 

3. application.yml 에 HikariCP 설정하기

spring:
  profiles:
    active: local
  thymeleaf:
    cache: false
    prefix: classpath:templates/
    suffix: .html
  datasource:
    hikari:
      driver-class-name: com.mysql.cj.jdbc.Driver
      jdbc-url: jdbc:mysql://192.168.56.1:3306/db명
      username: ****
      password: ****
      maximum-pool-size: 10
      validation-timeout: 5000
      connection-test-query: SELECT 1

 

설정값 설명
maximum-pool-size : 10 최대 pool 개수
validation-timeout: 5000 커넥션이 유효한지 검사할 때 최대 대기 시간
connection-test-query: SELECT 1 validationquery 유효 쿼리문

 

 

 

4. log4j2.xml 설정하기

src/main/resources 하위에 log4j2.xml 파일을 생성한다.

classpath 경로에 파일을 생성하면 자동설정된다.

 

log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
	<Appenders>
	   <Console name="Console" target="SYSTEM_OUT">
	     <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
	   </Console>
	</Appenders>
	
	<Loggers>
		<!-- HikariCP 로그 -->
	    <Logger name="com.zaxxer.hikari" level="DEBUG" additivity="false">
	      <AppenderRef ref="Console"/>
	    </Logger>
	    
	    <!-- Connection validation 관련 로그 (DriverManager 등 포함 가능) -->
	    <Logger name="java.sql" level="DEBUG" additivity="false">
	      <AppenderRef ref="Console"/>
	    </Logger>
	    
		<!-- 전체 root 로그 설정 -->
	    <Root level="INFO">
	      <AppenderRef ref="Console"/>
	    </Root>
	</Loggers>
</Configuration>

 

 

이렇게 30초마다 validation query문을 날려 connection pool 의 connection 이 유효한지 체크한다.

 

 

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.