如何将jsession id添加到apache http访问日志中

sah*_*ngh 6 apache2

我必须为我的Web应用程序创建访问日志.我们正在jboss.i前面使用appache http服务器使用apache访问日志指令,但问题是没有指令在访问log.i需要sessionid获取sessionid在访问日志中的统计报告.pls任何有解决方案的人帮助我.

Jan*_*ing 12

如果您的Web应用程序始终使用Cookie来管理会话,则可以更改LogFormat并添加用于记录特定cookie的参数:

LogFormat ... \"%{JSESSIONID}C\" ... combined
Run Code Online (Sandbox Code Playgroud)

这不适用于第一个请求,因为通常不会向服务器发送cookie.请参阅: http://httpd.apache.org/docs/2.2/mod/mod_log_config.html#formats:

%{Foobar的}℃

Cookie Foobar的内容在请求中发送到服务器.仅完全支持版本0 cookie.

如果你需要记录每个jsessionid,那么将编码到url字符串中的那些evene,你可以在你的web应用服务器上设置一个Header(如tomcat),如下所示:

response.setHeader("X-JSESSIONID", request.getSession().getId());
Run Code Online (Sandbox Code Playgroud)

在Apache日志格式中,您可以使用此日志记录此RepsonseHeader

%{Foobar的}ö

Foobar的内容:回复中的标题行.

所以它导致这样的事情:

LogFormat ... \"%{X-JSESSIONID}o\" ... combined
Run Code Online (Sandbox Code Playgroud)

但要注意安全性:您不应该记录jsessionid,因为每个有权访问日志文件的人都可以劫持每个用户会话.在tomcat中设置标题行时,您可能应该加密sessionid.

String sessionId = request.getSession().getId();
String crypt = yourcryptalgo(sessionId);
response.setHeader("X-JSESSIONID", crypt);
Run Code Online (Sandbox Code Playgroud)


Jas*_*onw 1

包含%{JSESSIONID}C到指令中LogFormat