在管理和维护Tomcat服务器时,查看日志是排查问题、监控系统运行状态的重要手段,Tomcat的日志主要分为 catalina.out、catalina.YYYY-MM-DD.log、host-manager.YYYY-MM-DD.log、localhost.YYYY-MM-DD.log、manager.YYYY-MM-DD.log 等文件,catalina.out 是最核心的日志,记录了Tomcat启动、运行及所有应用的输出信息,而按日期分割的日志文件则记录了特定时间段的访问、错误等详细信息,通过命令行工具,可以高效地查看、过滤和分析这些日志内容,以下是常用的命令行操作方法及场景应用。

基础查看命令
-
直接查看日志文件
使用cat命令可以查看日志文件的完整内容,适用于小型日志文件或快速预览:cat /path/to/tomcat/logs/catalina.out
若日志文件较大,直接使用
cat会导致终端输出刷屏,建议结合more或less命令分页查看:less /path/to/tomcat/logs/catalina.out
在
less界面中,可通过上下箭头滚动,按q退出,/keyword可搜索关键词,n跳转至下一个匹配项。 -
查看文件尾部内容
实时监控最新日志是排查实时问题的关键,tail命令可显示文件末尾的内容:
(图片来源网络,侵删)tail -f /path/to/tomcat/logs/catalina.out
-f参数会持续跟踪文件更新,适用于实时查看日志变化,若需指定显示行数,可添加-n参数,例如显示最后100行:tail -n 100 /path/to/tomcat/logs/catalina.out
日志过滤与分析
-
按关键词过滤
使用grep命令可从日志中提取包含特定关键词的行,例如查找包含 "ERROR" 的日志:grep "ERROR" /path/to/tomcat/logs/catalina.out
若需忽略大小写,可添加
-i参数:grep -i "error" /path/to/tomcat/logs/catalina.out
结合
-c参数可统计关键词出现次数:grep -c "ERROR" /path/to/tomcat/logs/catalina.out
-
多日志文件同时过滤
若需同时查看多个日志文件(如 catalina.out 和 localhost.log),可使用grep的-r参数递归搜索:grep "ERROR" /path/to/tomcat/logs/
-
排除特定关键词
使用grep的-v参数可排除包含关键词的行,例如查看非 "INFO" 级别的日志:grep -v "INFO" /path/to/tomcat/logs/catalina.out
日志时间范围查询
Tomcat按日期分割的日志文件(如 catalina.2023-10-01.log)可通过 ls 命令结合通配符查看特定日期的日志:
ls /path/to/tomcat/logs/catalina.2023-10-*.log
若需查询特定时间范围内的日志,可结合 awk 或 sed 命令处理时间戳,假设日志格式为 [yyyy-MM-dd HH:mm:ss],提取2023年10月1日10点后的日志:
awk '/2023-10-01 10:[0-9][0-9]:[0-9][0-9]/' /path/to/tomcat/logs/catalina.2023-10-01.log
日志归档与清理
长期运行后,Tomcat日志文件可能占用大量磁盘空间,需定期归档或清理。tar 命令可压缩旧日志:
tar -czf logs_2023-10-01.tar.gz /path/to/tomcat/logs/catalina.2023-10-01.log
清理日志前,建议先备份,然后使用 rm 命令删除(需确保Tomcat已停止,避免删除正在写入的日志):
# 停止Tomcat
./path/to/tomcat/bin/shutdown.sh
# 删除30天前的日志
find /path/to/tomcat/logs/ -name "*.log" -mtime +30 -exec rm {} \;
不同日志文件的作用与查看场景
| 日志文件名 | 作用说明 | 常见查看场景 |
|---|---|---|
| catalina.out | 记录Tomcat启动、关闭及所有应用的输出,包含INFO、ERROR、WARNING等级别日志 | 排查启动失败、应用异常、内存溢出等问题 |
| catalina.YYYY-MM-DD.log | 按日期分割的Catalina日志,记录更详细的运行信息 | 查询特定日期的运行状态、错误详情 |
| localhost.YYYY-MM-DD.log | 记录默认主机(localhost)的访问日志,包含应用请求及响应信息 | 分析Web应用的访问情况、请求路径错误 |
| manager.YYYY-MM-DD.log | 记录Tomcat Manager应用的操作日志,如应用部署、卸载、启动等 | 检查Manager管理操作是否成功 |
| host-manager.YYYY-MM-DD.log | 记录虚拟主机管理相关的日志 | 查看虚拟主机配置变更或访问权限问题 |
相关问答FAQs
Q1: 为什么使用 tail -f 查看日志时,新内容不显示?
A: 可能的原因有两个:一是日志文件被移动或重命名(Tomcat重启时会关闭旧日志并创建新文件),此时需重新执行 tail -f 指向新日志文件;二是权限不足,确保当前用户对日志文件有读取权限,建议在Tomcat运行期间避免手动修改或移动日志文件。
Q2: 如何快速定位Tomcat日志中的错误堆栈信息?
A: 错误堆栈通常包含 "Exception" 或 "Stack Trace" 等关键词,可结合 grep 和 head/tail 提取,查看最近10条错误堆栈:
grep -A 10 -B 2 "Exception" /path/to/tomcat/logs/catalina.out | tail -n 20
-A 表示匹配后显示N行,-B 表示匹配前显示N行,通过调整参数可获取完整的错误上下文。
