Tomcat AccessLog에서 특정 요청을 제외 (AccessLogValve 설정)
[참고] https://tomcat.apache.org/tomcat-7.0-doc/config/valve.html#Access_Log_Valve
0. 전제조건:
- 소스 수정 필요!!
1. conf/server.xml 열어서 아래 내용 추가
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" conditionUnless="DoNotLog" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> |
2. 로그를 남기기 원하지 않는 요청에 request.setAttribute("DoNotLog", "")를 추가한다.
@RequestMapping(value = "/weblist", method = RequestMethod.GET) public ModelAndView testPageList(HttpServletRequest request) { request.setAttribute("DoNotLog", ""); ModelAndView mav = new ModelAndView();
// Call services mav.addObject("list", testService.getEmpDetail()); mav.addObject("list2", testService.getEmpDetail()); // ... if you need more
mav.setViewName("testlist");
return mav; }
|
3. 빌드 및 배포 후 서버 재시작
4. 이제 더 이상 해당 요청에서는 AccessLog 가 기록되지 않는다.
== 간단 요약 ==
1. Server.xml 의 Valve 설정에 conditionUnless 를 추가 및 설정한다.
(로그 필요없는 조건 = "DoNotLog" 파라메터를 검사 시 null 이 아닌 놈들)
2. 소스에서 AccessLog 에 설정한 파라메터에 "" 을 set 하였으므로,
이 요청에서 DoNotLog 파라메터는 null 이 아니게 되고, => 기록이 되지 않게 된다.
( 기록대상은 request.getAttribute("DoNotLog") = null )