Debian系统中,Tomcat的日志文件默认存放在/var/log/tomcatX/目录(X为Tomcat版本号,如/var/log/tomcat9/)或/opt/tomcat/logs/目录(自定义安装路径)。主要日志文件包括:
catalina.out:Tomcat的标准输出/错误日志,包含会话ID等通用信息;localhost_access_log.*.txt:访问日志,记录客户端请求的详细信息(包括会话ID);logging.properties:日志配置文件,可调整会话信息的输出格式和级别。Tomcat中会话的唯一标识是JSESSIONID,它通过以下两种方式传递:
Set-Cookie响应头向客户端发送JSESSIONID(如Set-Cookie: JSESSIONID=ABC123; Path=/app);JSESSIONID附加在URL路径中(如/app;JSESSIONID=ABC123/page)。通过grep、tail等命令快速提取日志中的会话ID:
查看catalina.out中的会话ID:
grep "JSESSIONID" /var/log/tomcatX/catalina.out
输出示例:DEBUG [http-nio-8080-exec-1] org.apache.catalina.session.StandardSession.setId(StandardSession.java:389) - Set session ID: ABC123
查看访问日志中的会话ID:
访问日志中,JSESSIONID通常出现在Cookie头或URL中,可使用以下命令过滤:
grep -E "JSESSIONID|/;JSESSIONID=" /var/log/tomcatX/localhost_access_log.*.txt
输出示例:
127.0.0.1 - - [01/Oct/2025:10:00:00 +0000] "GET /app HTTP/1.1" 200 1234 "Cookie: JSESSIONID=ABC123"127.0.0.1 - - [01/Oct/2025:10:01:00 +0000] "GET /app;JSESSIONID=DEF456/page HTTP/1.1" 200 5678若需实时查看会话ID的生成/销毁,可使用tail -f命令:
tail -f /var/log/tomcatX/catalina.out | grep "JSESSIONID"
该命令会持续输出包含JSESSIONID的最新日志行,便于跟踪会话的动态变化。
若默认日志未记录足够的会话信息,可修改logging.properties文件(位于$CATALINA_HOME/conf/),增加会话相关的日志级别:
# 设置org.apache.catalina.session包的日志级别为FINE(更详细)
org.apache.catalina.session.level = FINE
handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
修改后需重启Tomcat使配置生效:
sudo systemctl restart tomcatX
通过以上步骤,可在Debian系统的Tomcat日志中快速定位并查看会话信息,帮助排查会话相关问题(如会话丢失、过期等)。