我必须为我的Web应用程序创建访问日志。我们正在jboss.i前面使用appache http服务器使用apache访问日志指令,但问题是没有指令在访问日志中获取sessionid。我需要在访问日志中使用sessionid进行统计报告.pls任何有解决方案的人都会帮助我。
答案 0 :(得分:11)
如果您的Web应用程序始终使用Cookie来管理会话,则可以更改LogFormat并添加用于记录特定cookie的参数:
LogFormat ... \"%{JSESSIONID}C\" ... combined
这对第一个请求不起作用,因为通常不会向服务器发送cookie。 看到: http://httpd.apache.org/docs/2.2/mod/mod_log_config.html#formats:
<强>%{Foobar的}℃强>
发送到服务器的请求中的Cookie Foobar的内容。仅完全支持版本0 cookie。
如果你需要记录每个jsessionid,那么将编码到url字符串中的那些evene,你可以在你的web应用服务器(如tomcat)上设置一个Header,如下所示:
response.setHeader("X-JSESSIONID", request.getSession().getId());
在Apache日志格式中,您可以使用
记录此RepsonseHeader的%{Foobar的}Ø强> 的
Foobar的内容:回复中的标题行。
所以它会产生这样的结果:
LogFormat ... \"%{X-JSESSIONID}o\" ... combined
但请关注安全性:您不应该记录jsessionid,因为每个有权访问日志文件的人都可以劫持每个用户会话。在tomcat中设置标题行时,您可能应加密sessionid。
String sessionId = request.getSession().getId();
String crypt = yourcryptalgo(sessionId);
response.setHeader("X-JSESSIONID", crypt);
答案 1 :(得分:1)
将%{JSESSIONID} C包含到LogFormat指令
中