더북(TheBook)

➊ 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 객체를 가져옵니다.

➋ 로그 메시지를 출력합니다.

➌ 현재 년/월/일 시:분:초를 얻어 오는 메서드입니다.