Ubuntu中Tomcat日志查看与管理指南
Tomcat的日志文件默认存储在以下路径之一,具体取决于安装方式(如apt包管理或手动解压):
/var/log/tomcatX/(X为Tomcat主版本号,如tomcat10对应/var/log/tomcat10/);apache-tomcat-X.X.X.tar.gz安装,日志通常位于/opt/tomcatX/logs/(X.X.X为版本号)。server.xml中的AccessLogValve标签确认访问日志路径(directory属性指定目录,prefix属性指定文件前缀)。使用tail -f命令可实时监控日志文件的新增内容,适用于排查正在发生的故障(如启动错误、请求异常):
tail -f /var/log/tomcatX/catalina.out # 查看主运行日志(包含启动、运行、关闭信息)
tail -f /var/log/tomcatX/localhost.YYYY-MM-DD.log # 查看本地主机特定日期日志(如localhost.2025-10-10.log)
按Ctrl+C可退出实时监控。
若日志文件较大,使用less命令可分页浏览,支持上下箭头导航、搜索(按/键输入关键字)和退出(按q键):
less /var/log/tomcatX/catalina.out
通过grep命令过滤日志中的关键字(如ERROR、Exception),快速定位问题:
grep 'ERROR' /var/log/tomcatX/catalina.out # 查找所有包含"ERROR"的行
grep -i 'exception' /var/log/tomcatX/localhost.log # 忽略大小写查找"exception"(-i参数)
使用wc -l命令统计日志文件的行数,快速了解日志规模:
wc -l /var/log/tomcatX/catalina.out
若需实时查看特定关键字的日志(如错误信息),可将tail -f与grep结合:
tail -f /var/log/tomcatX/catalina.out | grep 'ERROR'
此命令会实时显示包含ERROR的日志行,便于快速响应问题。
通过awk命令可提取日志中的特定字段(如时间戳、请求路径),并进行统计(如每分钟请求数):
awk '{print $1, $2}' /var/log/tomcatX/catalina.out | sort | uniq -c # 统计每分钟的请求次数(假设时间戳在前两列)
当日志文件过大时,可使用cronolog工具按日期分割日志(需提前安装):
# 安装cronolog(Ubuntu)
sudo apt install cronolog
# 修改catalina.sh脚本(在启动命令中替换日志输出路径)
# 找到类似"exec "$PRGDIR"/"$EXECUTABLE" start "$@"的行,替换为:
exec "$PRGDIR"/"$EXECUTABLE" start "$@" 2>&1 | /usr/bin/cronolog "/var/log/tomcatX/catalina.%Y-%m-%d.out" >> /dev/null &
此设置会将日志按日期分割为catalina.YYYY-MM-DD.out格式,便于管理。
Tomcat的日志级别决定了日志的输出详细程度,可通过修改conf/logging.properties文件调整:
# 设置全局日志级别(从低到高:FINEST、FINER、FINE、CONFIG、INFO、WARNING、SEVERE)
handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
.level = INFO # 默认级别为INFO,可根据需要调整为FINE(更详细)或WARNING(更简洁)
# 调整特定类的日志级别(如调整Servlet容器的日志级别)
org.apache.catalina.level = FINE
修改后需重启Tomcat使配置生效:
sudo systemctl restart tomcatX
若日志中出现乱码(如中文显示为乱码),需检查以下配置:
server.xml的Connector标签中添加URIEncoding="UTF-8":<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" />
locale命令查看,若未设置,可导出环境变量:export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
若无法查看或写入日志文件,需调整文件权限:
# 修改日志文件权限(允许所有用户读取)
sudo chmod 644 /var/log/tomcatX/catalina.out
# 修改日志目录权限(允许所有用户访问)
sudo chmod 755 /var/log/tomcatX/
# 若仍无法写入,可修改catalina.sh中的UMASK值(默认0027,改为0022)
echo "umask 0022" >> /opt/tomcatX/bin/catalina.sh