➊ file 출력을 설정합니다.
➋ 기존 로그 파일을 지우고 새로 생성합니다.
➌ 파일 크기를 설정합니다. 최댓값은 10MB입니다.
➍ 생성할 백업 파일의 수입니다. 기본값은 1입니다.
➎ 로그 파일 이름을 설정합니다.
➏ 레이아웃을 설정합니다.
➐ 출력 형식을 설정합니다.
➑ 로깅 레벨의 범위를 지정하는 클래스를 설정합니다.
➒ 로깅 레벨의 최하위 레벨을 설정합니다.
➓ 로깅 레벨의 최상위 레벨을 설정합니다.
3. com.springmvc.interceptor 패키지에 AuditingInterceptor 클래스를 생성하고 다음 내용을 작성합니다.
코드 11-8 AuditingInterceptor.java
package com.springmvc.interceptor;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
public class AuditingInterceptor extends HandlerInterceptorAdapter {
public Logger logger = LoggerFactory.getLogger(this.getClass()); ➊
private String user;
private String bookId;
public boolean preHandle(HttpServletRequest request,
HttpServletResponse arg1,
Object handler) throws Exception {
if (request.getRequestURI().endsWith("books/add") && request.getMethod().equals("POST")) {
user = request.getRemoteUser();
bookId = request.getParameterValues("bookId")[0];
}
return true;
}
public void afterCompletion(HttpServletRequest request,
HttpServletResponse response,
Object handler, Exception arg3) throws Exception {
if (request.getRequestURI().endsWith("books/add")) {
logger.warn(String.format("신규등록 도서 ID : %s, 접근자 : %s, 접근시각 : %s", bookId, user, getCurrentTime())); ➋
}
}
➌
private String getCurrentTime() {
DateFormat formatter = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
return formatter.format(calendar.getTime());
}
}
➊ Logger 객체를 가져옵니다.
➋ 로그 메시지를 출력합니다.
➌ 현재 년/월/일 시:분:초를 얻어 오는 메서드입니다.