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日志中快速定位并查看會話信息,幫助排查會話相關問題(如會話丟失、過期等)。