{"id":361,"date":"2018-06-29T17:35:22","date_gmt":"2018-06-29T08:35:22","guid":{"rendered":"https:\/\/vongg.com\/?p=361"},"modified":"2018-07-18T11:37:00","modified_gmt":"2018-07-18T02:37:00","slug":"spring-aop-%e5%ae%9e%e7%8e%b0log%e6%97%a5%e5%bf%97%e7%b3%bb%e7%bb%9f-%e5%9f%ba%e6%9c%ac%e5%ae%9e%e7%8e%b0","status":"publish","type":"post","link":"https:\/\/vongg.com\/?p=361","title":{"rendered":"Spring Aop \u5b9e\u73b0Log\u65e5\u5fd7\u7cfb\u7edf\u2014\u2014\u57fa\u672c\u5b9e\u73b0"},"content":{"rendered":"<p>https:\/\/blog.csdn.net\/cun_chen\/article\/details\/52464443<\/p>\n<p>https:\/\/blog.csdn.net\/rainbow702\/article\/details\/52053958<\/p>\n<p>goooooooooooooood\uff01\uff01<\/p>\n<p>https:\/\/blog.csdn.net\/czmchen\/article\/details\/42392985<\/p>\n<p>Log\u65e5\u5fd7\u7cfb\u7edf\u53ef\u4ee5\u8bf4\u662f\u9879\u76ee\u5f00\u53d1\u4e2d\u6700\u57fa\u672c\u7684\u6a21\u5757\u4e4b\u4e00\uff0c\u5728\u672a\u4f7f\u7528Spring Aop\u4e4b\u524d\uff0c\u65e5\u5fd7\u8bb0\u5f55\u90fd\u662f\u91c7\u7528\u624b\u5de5\u914d\u7f6e\u3002\u7531\u4e8e\u5f00\u53d1\u4eba\u5458\u7684\u4ee3\u7801\u98ce\u683c\u4e0d\u7edf\u4e00\uff0c\u7ecf\u5e38\u4f1a\u5bfc\u81f4\u65e5\u5fd7\u98ce\u683c\u6df7\u4e71\uff0c\u96be\u4ee5\u9605\u8bfb\uff0c\u751a\u81f3\u65e5\u5fd7\u9057\u6f0f\u60c5\u51b5\u3002<br \/>\n\u901a\u8fc7Aop\u53ef\u4ee5\u5b9e\u73b0\u65e5\u5fd7\u7cfb\u7edf\u7684\u81ea\u52a8\u914d\u7f6e\uff0c\u51cf\u5c11\u4eba\u5de5\u914d\u7f6e\u7684\u9519\u8bef\u98ce\u9669\uff0c\u540c\u65f6\u63d0\u9ad8\u65e5\u5fd7\u7cfb\u7edf\u7684\u5065\u58ee\u6027\u3002<\/p>\n<p><span style=\"color: #ff0000;\">\u5229\u7528spring aop\u7edf\u4e00\u5904\u7406\u5f02\u5e38\u548c\u6253\u65e5\u5fd7<\/span><\/p>\n<p>https:\/\/blog.csdn.net\/u012814506\/article\/details\/48638017<\/p>\n<p>\u4f8b\uff1a<\/p>\n<p>package jp.co.niuma.security.aop.log;<\/p>\n<p>import java.util.Arrays;<br \/>\nimport java.util.Enumeration;<br \/>\nimport java.util.regex.Pattern;<\/p>\n<p>import javax.servlet.http.HttpServletRequest;<\/p>\n<p>import org.apache.log4j.Logger;<br \/>\nimport org.aspectj.lang.ProceedingJoinPoint;<br \/>\nimport org.aspectj.lang.annotation.Around;<br \/>\nimport org.aspectj.lang.annotation.Aspect;<br \/>\nimport org.aspectj.lang.annotation.Pointcut;<br \/>\nimport org.springframework.web.context.request.RequestContextHolder;<br \/>\nimport org.springframework.web.context.request.ServletRequestAttributes;<\/p>\n<p>@Aspect<br \/>\npublic class Log4Controller {<\/p>\n<p>protected Logger logger = Logger.getLogger(this.getClass());<\/p>\n<p>@Pointcut(&#8220;execution( * jp.co.niuma.security.web.spring.controller..*.*(..))&#8221;)<br \/>\npublic void allControllerMethodsPointcut() {<br \/>\n}<\/p>\n<p>@Around(&#8220;allControllerMethodsPointcut()&#8221;)<br \/>\npublic Object aroundMethod(ProceedingJoinPoint pjd) {<\/p>\n<p>Object result = null;<br \/>\nString methodName = pjd.getSignature().getName();<br \/>\nString methodFullName = pjd.getSignature().getDeclaringTypeName();<\/p>\n<p>try {<br \/>\nlogger.info(<br \/>\n&#8220;The CONTROLLER method &#8221; + methodFullName + &#8220;.&#8221; + methodName + &#8221; BEGINS with args : &#8221; + Arrays.asList(pjd.getArgs()));<br \/>\nServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();<br \/>\nif(attributes != null){<br \/>\nHttpServletRequest request = attributes.getRequest();<br \/>\nlogger.debug(&#8220;URL : &#8221; + request.getRequestURL().toString());<br \/>\nlogger.debug(&#8220;HTTP_METHOD : &#8221; + request.getMethod());<br \/>\nlogger.debug(&#8220;IP : &#8221; + request.getRemoteAddr());<br \/>\nEnumeration&lt;String&gt; enu = request.getParameterNames();<br \/>\nwhile (enu.hasMoreElements()) {<br \/>\nString paraName = (String) enu.nextElement();<br \/>\nlogger.info(paraName + &#8220;: &#8221; + request.getParameter(paraName));<br \/>\n}<br \/>\n}<\/p>\n<p>\/\/ \u76ee\u6a19Method\u306e\u5b9f\u884c<br \/>\nresult = pjd.proceed();<br \/>\nlogger.info(&#8220;The CONTROLLER method &#8221; + methodFullName + &#8220;.&#8221; + methodName + &#8221; ends with return value : &#8221; + result);<\/p>\n<p>} catch (Throwable e) {<br \/>\nlogger.error(&#8220;The CONTROLLER method &#8221; + methodFullName + &#8220;.&#8221; + methodName + &#8221; occurs exception:&#8221; + e);<br \/>\ne.printStackTrace();<br \/>\nlogger.info(&#8220;The CONTROLLER method &#8221; + methodFullName + &#8220;.&#8221; + methodName + &#8221; ENDS&#8221;);<br \/>\n\/\/\u30ed\u30b0\u30a4\u30f3\u6a5f\u80fd\u3001\u30ed\u30b0\u30a2\u30a6\u30c8\u6a5f\u80fd\u3001\u30d1\u30b9\u30ef\u30fc\u30c9\u5909\u66f4\u6a5f\u80fd\u306a\u3069\u306e\u5834\u5408\u3001header,menu,footer\u306a\u3069\u306e\u306a\u3044errorPage\u753b\u9762\u3092\u8868\u793a\u3059\u308b\u3002<br \/>\nif(Pattern.matches(&#8220;^jp\\\\.co\\\\.niuma\\\\.security\\\\.web\\\\.spring\\\\.controller\\\\.[a-zA-Z]+$&#8221;, methodFullName)){<br \/>\nreturn &#8220;..\/..\/errorPage&#8221;;<br \/>\n}else{\/\/\u30ed\u30b0\u30a4\u30f3\u6a5f\u80fd\u3001\u30ed\u30b0\u30a2\u30a6\u30c8\u6a5f\u80fd\u3001\u30d1\u30b9\u30ef\u30fc\u30c9\u5909\u66f4\u6a5f\u80fd\u4ee5\u5916\u306e\u5834\u5408\u3001header,menu,footer\u306a\u3069\u306e\u3042\u308berror\u753b\u9762\u3092\u8868\u793a\u3059\u308b\u3002<br \/>\nreturn &#8220;error&#8221;;<br \/>\n}<br \/>\n}<br \/>\nlogger.info(&#8220;The CONTROLLER method &#8221; + methodFullName + &#8220;.&#8221; + methodName + &#8221; ENDS&#8221;);<br \/>\nreturn result;<br \/>\n}<br \/>\n}<\/p>\n","protected":false},"excerpt":{"rendered":"<p>https:\/\/blog.csdn.net\/cun_chen\/article\/details\/52464443 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[19],"tags":[98,112],"_links":{"self":[{"href":"https:\/\/vongg.com\/index.php?rest_route=\/wp\/v2\/posts\/361"}],"collection":[{"href":"https:\/\/vongg.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vongg.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vongg.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vongg.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=361"}],"version-history":[{"count":6,"href":"https:\/\/vongg.com\/index.php?rest_route=\/wp\/v2\/posts\/361\/revisions"}],"predecessor-version":[{"id":499,"href":"https:\/\/vongg.com\/index.php?rest_route=\/wp\/v2\/posts\/361\/revisions\/499"}],"wp:attachment":[{"href":"https:\/\/vongg.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=361"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vongg.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=361"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vongg.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=361"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}