📒 개발기록/JSP 프로젝트

[JSP][도서쇼핑몰 프로젝트]#9.로그 기록하기

초코붕붕 2023. 2. 10. 08:00
728x90

안녕하세요! 오늘은 페이지를 실행했을 때

로그가 기록되는 것을 만드려고 합니다.

그럼 진행순서부터 살펴볼까요?


📋순서

1. Filter인터페이스 클래스 작성

2. web.xml파일에 필터 구성

3. 결과


#01. Filter인터페이스의 구현 클래스 작성

/src/ 폴더에 filter패키지를 만들어 준 후 LogFilter.java파일을 생성해주고 다음과 같이 코드를 작성하여 주면 되는데요.

필터를 초기화 하도록 init()메소드를 작성하여 줍니다.

public void  init(FilterConfig config) throws ServletException{
	System.out.println("BOOK 초기화...."); 
}

필터를 리소스에 적용하도록 doFilter()메소드를 작성하여 줍니다.

public void  doFilter(ServletRequest request,ServletResponse response,
		FilterChain chain) throws java.io.IOException, ServletException {
	System.out.println(" 접속한 클라이언트 IP : " + request.getRemoteAddr());
	long start = System.currentTimeMillis();
       System.out.println(" 접근한 URL 경로 : " + getURLPath(request));
	System.out.println(" 요청 처리 시작 시각 : " + getCurrentTime());
	chain.doFilter(request,response);		
	
	long end = System.currentTimeMillis();		
	System.out.println(" 요청 처리 종료 시각 : " + getCurrentTime());
	System.out.println(" 요청 처리 소요 시간 : " + (end-start)+ "ms ");
	System.out.println("=======================================================");
}

필터를 종료하기 전에 호출하도록 destpry()메소드를 작성합니다.

public void destroy( ){
      
}

현재 접속한 URL을 얻어오는 사용자 정의 메소드인 getURLPath()작성하여 줍니다.

private String getURLPath(ServletRequest request) {
	HttpServletRequest req;
	String currentPath="";
	String queryString=""; 
	if(request instanceof HttpServletRequest){
		req = (HttpServletRequest)request;
		currentPath = req.getRequestURI();
		queryString = req.getQueryString();
		queryString = queryString == null ? "" : "?" + queryString;
	}
	return currentPath+queryString;
}

현재 시간을 얻어오는 사용자 정의 메소드인 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());
}
반응형

#02. web.xml파일에 필터 구성하기

web.xml에 LogFilter와 Filter인터페이스를 구현한 자바 클래스 LogFilter을 설정하도록 <filter>요소를 작성하여 줍니다. 필터 이름LogFilter와 요청 URL 패턴 /*을 설정하도록 <filter-mapping>요소를 작성합니다. 

<filter>
	<filter-name>LogFilter</filter-name>
	<filter-class>filter.LogFilter</filter-class>     
</filter>
<filter-mapping>
	<filter-name>LogFilter</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>

#03. 결과

실행을 시키면 콘솔창에 로그 기록들이 뜨는 것을 확인할 수 있습니다. 

반응형