[Spring Boot] Timezone 관련 설정 정리

와이즐리 Review MSA 구축 경험을 바탕으로 Spring Boot에서 Timezone 관련 설정 방법을 자세히 안내해 드립니다.

* 와이즐리에서 Review MSA, 거래대사 정산 시스템을 만들면서 Timezone 이슈가 생겨서 이를 관련하여 정리
 
0. Spring Boot 자체의 Timezone 설정
Spring Boot 에는 기본적으로 내장 Tomcat 의 탑재되어 있기 때문에, 별도의 설정을 하지 않으면 내장 Tomcat 의 Timezone 이 UST 로 설정되어 문제가 되는 경우가 있다.
(ex. Jackson Date 객체를 ResponseBody 로 반환할 때, Timezone 설정이 꼬여서 이상한 시간으로 출력될 수 있음.)

/\*
=============================================
Author: Heejae Kim
Create date: 2020-06-29
Description: Spring Boot Application for WISELY-REVIEW-API
=============================================
\*/

package example.web.review;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

import javax.annotation.PostConstruct;
import java.util.Date;
import java.util.TimeZone;

@SpringBootApplication
public class Application {

 private static final Logger logger = LoggerFactory.getLogger(Application.class);

 @PostConstruct
 public void started() {
 TimeZone.setDefault(TimeZone.getTimeZone("Asia/Seoul"));
 logger.info("CURRENT TIME : " + new Date());
 }

 public static void main(String[] args) {

 SpringApplication application = new SpringApplication(Application.class);
 application.run(args);

 }

}
 

1. 서버 OS 타임존을 모두 Asia/Seoul 로 설정했으나, Logger 에서 타임존이 UST 로 설정되어 나타나는 경우 
처음에는 OS 의 Timezone 을 체크했으나, Asia/Seoul 로 정상적으로 설정되어 있었다.
Spring Boot Application 단의 Timezone 을 체크했으나, Asia/Seoul 로 정상적으로 설정되어 있었다. (하단 참고)
Logger 설정을 바꿀 수 있는지 설정 -> 문제 해결
logback-spring.xml 설정에서, pattern 부분에 Timezone 을 설정할 수 있다.

\
 \
 \
 \%d{yyyy-MM-dd HH:mm:ss, Asia/Seoul} [%thread] %-3level %logger{5} - %msg %n\
 \
\
 

이것도 읽어보세요