현재 사용하지 않는 url을 찾으려고 합니다.
- 먼저 소스코드에 등록되어 있는 모든 url을 찾고..
- 그 다음에는 실제 호출되고 있는 서버로그에 남는 url을 정리하고...
- 마지막으로 1.등록된 url과 2.호출되고 있는 url을 비교하여 호출되지 않는 url을 찾아내려고 합니다.
질문 1. 컨트롤러에 선언되어 있는 @RequestMapping 어노테이션에 등록된 모든 url을 가져오려고 하는데 어떻게 하면 될까요? 질문 2. 서버로그에 남는 url을 모두 찾아내는데 효율적인 방법은 무엇이 있을까요? 질문 3. 위 기능을 툴로 만들면 재사용성도 좋을것 같고.. 오픈소스로 공개하면 여러모로 도움이 될 것 같은데... 좋은 아이디어 공유해주세요.
감사합니다.^^
4개의 의견 from SLiPP
질문1 org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.ServletHandlerMethodResolver.isHandlerMethod(Method) 이 답이 될것 같습니다.
질문 2. 스프링에서는 다음과 같이 찾는것같습니다.. org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.ServletHandlerMethodResolver.resolveHandlerMethod(HttpServletRequest)
http://vard-lokkur.blogspot.kr/2011/01/sts-requestmappings-view.html
이런 식으로, STS를 이용해서 찾으시면 수월하게 찾을 수 있습니다.
이전에 재성형이랑 이야기 했던 쪽에서 나왔던 예제 코드 일부만 수정하시면 될 것 같네요.
여기서, awk 인자 좀 수정하시고, sort 빼시면, uniq 하게 access.log 내용을 뽑을 수 있을 것으로 보입니다. 각 서버의 access log 에 대해 해당 작업을 수행하시고, 비슷한 방식으로 merge 하면 되겠네요.
http://stackoverflow.com/questions/10898056/how-to-find-all-controllers-in-spring-mvc
이런건가?
앞 글에 @eclipse4j 가 공유한 URL이 정확히 네가 1번에서 추출하려고 하는 정보를 추출할 수 있네. http://www.java-allandsundry.com/2012/03/endpoint-documentation-controller-for.html 보면 더 확실함을 알 수 있다.
이 방법도 좋지만 앞에서 @Kenny 가 언급한 방식이 더 좋겠다는 생각이 든다. access.log 분석하면 각 일별, url별 요청 수 등은 모두 파악할 수 있을 듯하다. 만약 그래도 굳이 위 방법을 통해 구현하고 싶다면 2번 질문에 대해서는 mvc interceptor와 log4j와 같은 도구의 Async로 처리할 수 있는 Appender하나 추가해서 별도의 로그를 쌓을 수 있도록 하면 가능하지 않을까? 이전 회사에서는 에러 로그를 이와 같은 방식으로 수집해서 관리했는데 정말 유용했다.
근데 이 툴을 만들면 어떤 부분에 유용할까? 어떤 용도로 활용할 경우 유용할지에 대해서 아직 감이 잡히지 않아서 말이야. 각 url별 요청 통계는 다른 형태로도 구현되어 있는 툴이 많아서 말이지. 그냥 google analytics만 사용하더라도 왠만한 정보는 추출할 수 있을 듯하다.
의견을 남기기 위해서는 SLiPP 계정이 필요합니다.
안심하세요! 회원가입/로그인 후에도 작성하시던 내용은 안전하게 보존됩니다.
SLiPP 계정으로 로그인하세요.
또는, SNS 계정으로 로그인하세요.