收藏本页|设为主页|RSS
LOGO

我就上乐乐吧

Tomcat日志文件记录Post请求参数技术杂萃 苦逼码农的点点滴滴,请多多指教!我就上乐乐吧资源的世界,资源的海洋,收集各类资源,以无LOGO原汁原味为主!欢迎大家交流。智者乐山,仁者乐水,独乐乐,不如众乐乐,乐山,乐水,乐天,乐地,乐乐吧...

您当前的位置:首页»技术杂萃
全站公告
重要提示!

本站收集各类美图,以无LOGO原汁原味图为主!欢迎大家交流。
怕失联,请认准如下地址:
微博:http://weibo.com/237h
微信:SuperBeautylove
轻博客:http://www593668com.lofter.com/
花瓣:http://huaban.com/sinsunson
Q群1:231151757
Q群2:583138281
网站:http://www.593668.com
文件解压密码:593668.com
热心赞助

站内搜索
 
相关文章
热门文章
热搜词组
文章归档
友情链接
    Tomcat日志文件记录Post请求参数

    发布日期:2019-08-12  关键词:Tomcat

    之前的文章《Tomcat日志文件配置参数说明》已经提及过了,日志文件中,%r参数能打印出用户请求的url和get参数。但是这里就有一个问题了,如果url指定访问方式是POST,那么这些接受的参数就打印不了。当项目实际中又真的需要打印所有POST参数,那又该如何是好?这种时候就需要用过自定义filter类了,思想自然也是很清晰的。

    日志文件采用%{xxx}r方式可以提取req中的相关参数,那么在过滤器中将相应提交的POST数据set进一个attribute,再然后利用%{xxx}r设定一个参数放进tomcat server.xml中的value就能达成我们的目的了。

    1)创建PostDataDumperFilter.Java文件,复制如下方法代码进文件中:
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletException {
      HttpServletRequest req = (HttpServletRequest) request;
      if (req.getMethod().equals("POST")) { //只记录POST数据
       Enumeration<String> names = request.getParameterNames();
       StringBuffer output = new StringBuffer();
       while (names.hasMoreElements()) {
        String name = (String) names.nextElement();
        output.append(name + "=");
        String values[] = request.getParameterValues(name);
        for (int i = 0; i < values.length; i++) {
         if (i > 0) {
          output.append(","); //记录数组参数
         }
         output.append(values[i]);
        }
        if (names.hasMoreElements()) {
         output.append("&");
        }
       }
       req.setAttribute("postdata", output);
      }
      chain.doFilter(request, response);
    }

    2)修改web.xml,加入如下Filter类[这里filter-class类要跟第一步创建的类名对应]。
    <filter>
      <filter-name>post-data</filter-name>
      <filter-class>PostDataDumperFilter</filter-class>
    </filter>
    <filter-mapping>
      <filter-name>post-data</filter-name>
      <url-pattern>/*</url-pattern>
      <dispatcher>FORWARD</dispatcher>
      <dispatcher>REQUEST</dispatcher>
      <dispatcher>INCLUDE</dispatcher>
    </filter-mapping>

    3)修改tomcat的conf目录下的配置文件server.xml中的AccessLogValve这个Valve的配置为[这里postdata同样要跟第一步创建的Filter类方法中设置的属性对应]:
    pattern="%{X-Real-IP}i %l %u %t %D &quot;%r&quot; %s %b &quot;%{postdata}r&quot;"

    4)然后就是重启Tomcat,大体上就可以看到如下页面了。

    Tomcat日志文件记录Post请求参数,Tomcat,技术杂萃

    当然这里针对的是整个项目的,如果只是针对某个具体的地址来进行采集,那么web.xml中的url-pattern不要用*了,可以自行调整。
    猜您喜欢:
    Q群:231151757微信:superimagelove官网:www.593668.com