[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\ \
이것도 읽어보세요