自定义LogFormat - 记录所有标头

时间:2011-09-20 12:21:37

标签: apache apache2

某些移动网关正在将自定义标头传递到我的网站。这些头文件以各种格式传递,有时是x-msisdn,有时是x-up-calling-line-id等。如何记录以自定义日志格式传递的所有标头?

2 个答案:

答案 0 :(得分:0)

通过Apache HTTPD我不知道如何记录所有标题 - 只记录如何记录您知道的一个标题。

使用标准的Apache httpd模块mod_log_config,您可以在CustomLog指令中指定以下选项。

%{Foobar} i Foobar的内容:发送到服务器的请求中的标题行。其他模块(例如mod_headers)所做的更改会影响这一点。

然而你可以在jsp中做到这一点(如果这是你偶然使用的那个)

<!-- method used to send request
<%= request.getMethod() %>

URI of the request
<%= request.getRequestURI() %>

  <%
     /*This method returns an enumeration of all the header names this 
       request contains.*/       
  java.util.Enumeration names = request.getHeaderNames();
  while (names.hasMoreElements()) {
     String hname = (String)names.nextElement();
  %>

     <%= hname %>
     <%= request.getHeader(hname) %>
  <%
  }
  %>
--!>

答案 1 :(得分:0)

您也可以嗅探网络接口来执行此操作。

Wireshark有tshark(apt-get install tshark) tshark'tcp端口80和(((ip [2:2] - ((ip [0]&amp; 0xf)&lt;&lt; 2)) - ((tcp [12]&amp; 0xf0)&gt;&gt; 2) )!= 0)'-R'http.request.method ==“GET”|| http.request.method ==“HEAD”'

(上面来自http://andy.wordpress.com/2008/07/10/sniffing-http/ tshark是tethereal的新名称

或使用类似https://github.com/caesar0301/http-sniffer

的内容