Tomcat的Access Log Valve是记录访问日志的核心组件,可通过配置其pattern属性,在日志中输出会话ID(JSESSIONID)。具体步骤如下:
conf/server.xml文件,在<Host>标签内添加或修改AccessLogValve配置,示例如下:<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs"
prefix="localhost_access_log."
suffix=".txt"
pattern="%h %l %u %t "%r" %s %b %{JSESSIONID}c %T" />
其中,%{JSESSIONID}c是关键参数,表示记录客户端请求中的JSESSIONID Cookie值(即会话ID);%T可选,用于记录请求处理时间。1234567890abcdef为会话ID):192.168.1.100 - - [30/Sep/2025:10:00:00 +0800] "GET /example/page HTTP/1.1" 200 1024 "JSESSIONID=1234567890abcdef" 0.123
logs目录下(如localhost_access_log.2025-09-30.txt),可使用tail -f命令实时查看新增日志,或用grep过滤会话ID:tail -f logs/localhost_access_log.2025-09-30.txt | grep "JSESSIONID="
Tomcat的catalina.out(标准输出)和localhost.log(应用日志)中,会记录会话的创建、销毁及属性变更等调试信息。
conf/logging.properties文件,提高org.apache.catalina.session包的日志级别(如设为FINE),示例如下:org.apache.catalina.session.level = FINE
FINE [http-nio-8080-exec-1] org.apache.catalina.session.StandardSessionManager.createSession
Created session with id: 1234567890abcdef
FINE [http-nio-8080-exec-2] org.apache.catalina.session.StandardSession.getAttribute
Getting attribute 'username' from session: 1234567890abcdef
logs目录下(catalina.out为所有输出合并的日志,localhost.log为应用相关日志),使用tail或less命令查看:tail -f logs/catalina.out | grep "StandardSession"
通过上述两种方式,可将会话ID与客户端IP、请求URI、响应状态等信息关联起来,帮助分析用户行为。例如:
JSESSIONID=1234567890abcdef);JSESSIONID时,Tomcat才会创建新会话并生成ID;若客户端携带了有效的JSESSIONID,则会复用现有会话。INFO)。