servlet-context.xml 파일 설정

<beans:bean id="accessLoggingInterceptor" class="kr.or.ddit.controller.intercept.AccessLoggingInterceptor"></beans:bean>
	<interceptors>
		<interceptor>
			<mapping path="/*"/>
			<exclude-mapping path="/resources/**"/>
			<beans:ref bean="accessLoggingInterceptor"/>
		</interceptor>
	</interceptors>

AccessLoggingInterceptor.java

package kr.or.ddit.controller.intercept;

import java.io.File;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.lang.reflect.Method;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

import lombok.extern.slf4j.Slf4j;

@Slf4j
public class AccessLoggingInterceptor extends HandlerInterceptorAdapter{

	PrintWriter writer;
	
	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
			throws Exception {
		log.info("preHandle...!");
		File file = new File("C:/logs/ddit_logging.log");
		writer = new PrintWriter(new FileWriter(file));
		return true;
	}

	@Override
	public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
			ModelAndView modelAndView) throws Exception {
		String requestURI = request.getRequestURI();
		log.info("requestURI : " + requestURI);
		
		HandlerMethod handlerMethod = (HandlerMethod) handler;
		Method method = handlerMethod.getMethod();
		
		Class clazz = method.getDeclaringClass();			//class kr.or.ddit.controller.BoardContoller 와 같은 녀석
		
		String className = clazz.getName();					// kr.or.ddit.controller.BoardController와 같은 녀석
		String classSimpleName = clazz.getSimpleName();		// BoardController와 같은 녀석
		String methodName = method.getName();				// boardList와 같은 메소드
		
		writer.printf("현재일시 : %s %n", getCurrentTime());
		writer.printf("Access Controller", className + "." + methodName);
	}
	
	public String getCurrentTime() {
		DateFormat formatter = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
		Calendar cal = Calendar.getInstance();
		cal.setTimeInMillis(System.currentTimeMillis());
		return formatter.format(cal.getTime());
	}
	@Override
	public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
			throws Exception {
		// TODO Auto-generated method stub
		super.afterCompletion(request, response, handler, ex);
	}

}

로그인 페이지로 넘어오면 preHandle() 메소드가 실행되 해당 로그 파일이 생성되고

Untitled

로그인을 진행하면 로그파일에 잘 저장되는 것을 볼 수 있다.

Untitled

Untitled