2011-05-30 6 views
5

Tengo que crear registros de acceso para mi aplicación web. Estamos usando el servidor http appache frente a jboss.i estoy usando apache access log directive para eso, pero el problema es que hay no es una directiva para obtener sessionid en el registro de acceso. Necesito el sessionid en los registros de acceso para las estadísticas. Cualquier persona que tenga solución me ayudará.cómo agregar jsession id en apache http access log

Respuesta

1

incluyen% {JSESSIONID} C en la directiva LogFormat

+0

Lo he probado pero no ha devuelto nada. –

+0

He intentado seguir la sintaxis de la directiva, pero no agrega sessionid al registro LogFormat "% t% h \"% r \ "%> s% b \"% {Referer} i \ "\"% {User-agent } i \ "% {JSESSIONID} C" combinados registros de CustomLog/kv_acces_log combinados –

+0

necesita reiniciar httpd y actualizar en el navegador del cliente para que jsessionid aparezca en el registro de acceso. – Jasonw

9

Si la aplicación web siempre utiliza cookies para gestionar las sesiones va a estar bien con el cambio de su LogFormat y añadir un parámetro para el registro de la cookie específica:

LogFormat ... \"%{JSESSIONID}C\" ... combined 

Esto no funciona en la primera solicitud, ya que normalmente no se envía ninguna cookie al servidor. Ver: http://httpd.apache.org/docs/2.2/mod/mod_log_config.html#formats:

% {} C Foobar

El contenido de Foobar galleta en la solicitud enviada al servidor. Solo las cookies de la versión 0 son totalmente compatibles.

Si tienes que entrar cada jsessionid, por lo Evene los codificados en la cadena de URL, puede establecer una cabecera de su servidor de aplicaciones web (como Tomcat) así:

response.setHeader("X-JSESSIONID", request.getSession().getId()); 

en Apache Log formato puede iniciar sesión con este RepsonseHeader

% {} Foobar o

El contenido de Foobar: encabezado línea (s) en la respuesta.

lo que resulta en algo como esto:

LogFormat ... \"%{X-JSESSIONID}o\" ... combined 

pero mantener un ojo en Seguridad: No debe conectarse jsessionid porque cualquiera que tenga acceso al archivo de registro puede secuestrar cada sesión de usuario. Cuando establece una línea de encabezado en su tomcat, quizás deba encriptar el sessionid.

String sessionId = request.getSession().getId(); 
String crypt = yourcryptalgo(sessionId); 
response.setHeader("X-JSESSIONID", crypt); 
Cuestiones relacionadas