2016. 12. 5. 16:48


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 &quot;%r&quot; %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 )




Posted by 해비