一、Tomcat日志文件位置
在CentOS系统中,Tomcat日志文件的默认路径由$CATALINA_HOME(Tomcat安装目录)决定,主要日志文件分布在$CATALINA_HOME/logs目录下:
localhost_access_log.<date>.txt):HTTP请求访问日志,记录客户端IP、请求方法、响应状态码等信息(部分版本需通过server.xml配置开启)。若Tomcat通过systemd服务管理(如CentOS 7及以上),日志也可能被journald收集,可通过journalctl命令查看。
二、常用日志查看命令
实时查看日志(tail命令)
tail -f catalina.out:持续显示catalina.out文件的最新内容,按Ctrl+C停止。常用变体:
tail -n 100 catalina.out:显示文件最后100行;tail -q -f catalina.out:安静模式(不显示处理信息);tail -v -f catalina.out:详细模式(显示处理信息)。过滤关键字(grep命令)
结合tail -f实时过滤日志中的关键字(如“error”),快速定位问题:
tail -f catalina.out | grep "error"(不区分大小写可加-i)。
分页查看大文件(less命令)
对于大型日志文件,使用less命令可上下滚动查看,支持搜索(按/键输入关键字):
less catalina.out,按q退出。
查看Systemd日志(journalctl命令)
若Tomcat以systemd服务运行(服务名通常为tomcat),可通过以下命令查看日志:
journalctl -u tomcat.service -f(-f表示实时跟踪,-u指定服务单元)。
三、日志轮转配置(避免日志过大)
Tomcat默认通过logrotate工具实现日志轮转(每天分割日志并压缩),配置文件位于/etc/logrotate.d/tomcat。示例配置(每天轮转、保留7天、压缩):
/usr/local/tomcat/logs/catalina.out {
daily
rotate 7
missingok
notifempty
compress
delaycompress
sharedscripts
}
daily:每天轮转;rotate 7:保留最近7个轮替文件;compress:压缩旧日志(delaycompress延迟压缩,避免当天日志未完全写入时压缩);sharedscripts:所有日志轮转完成后统一执行脚本。四、日志级别设置(控制日志详细程度)
Tomcat的日志级别通过$CATALINA_HOME/conf/logging.properties文件配置,常见级别从低到高为:OFF(关闭)、SEVERE(严重错误)、WARNING(警告)、INFO(常规信息)、CONFIG(配置信息)、FINE(调试)、FINER(详细调试)、FINEST(最详细调试)。
设置根日志级别(影响全局):
找到handlers行(如handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler),在其上方添加:
.level = INFO(设置为INFO级别,平衡信息量与可读性)。
设置特定组件日志级别(针对性调试):
例如,调整Catalina容器或数据库驱动的日志级别:
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = FINE
java.sql.level = FINE
修改后需重启Tomcat使配置生效:
$CATALINA_HOME/bin/shutdown.sh && $CATALINA_HOME/bin/startup.sh。
五、高级技巧
截取特定时间段日志(sed命令):
若需分析某一时间段的日志(如2025-10-01 12:00至12:05),可使用sed命令:
sed -n "/2025-10-01 12:00/,/2025-10-01 12:05/p" catalina.out > /tmp/tomcat_segment.log。
结合多命令分析:
例如,统计catalina.out中“error”的出现次数:
grep -c "error" catalina.out;
或将错误日志保存到单独文件:
grep "error" catalina.out > /tmp/tomcat_errors.log。