이전에 방문자 로그파일을 하루단위로 만들었었는데, 이제 이 파일을 자정마다 읽어들여서 db에 업데이트 하는 것을 해보려고 한다.
스케줄러를 사용하기 위해 (프로젝트명)Application
클래스 위에 @EnableScheduling
애노테이션을 붙여주고,
해당 메서드 위에는 @Scheduled
애노테이션을 붙인다. 괄호안에는 cron식
을 작성한다.
나는 자정마다 실행되는것을 원하므로 "0 0 0 * * *"라고 작성하였다.
@EnableScheduling
public class AlcoholicApplication {
...중략
}
@Scheduled(cron = "0 0 0 * * *") //매일 자정
public void readLogFile () throws IOException {
Date d = new Date(); //오늘날짜
d = new Date(d.getTime()+(1000*60*60*24*-1)); //어제날짜
SimpleDateFormat yesterday = new SimpleDateFormat("yyyy-MM-dd");
String filePath = basePath+ yesterday.format(d)+".0.log";
List<String> lines = Files.readAllLines(Paths.get(filePath),
StandardCharsets.UTF_8); //어제 날짜의 로그파일 읽어들임
...중략...
}
크론은 6자리로 이루어져 있고, 초 - 분 - 시 - 일 - 월 - 요일
순이다.
ex) * * * * * * //매초 실행
0 0 0/1 * * * //1시간마다 실행
0 0 7 * * * //매일 7시에 실행