1. 定位Ubuntu Tomcat日志文件
Tomcat的日志文件默认存储在/var/log/tomcat(或/var/log/tomcatX,X为版本号,如tomcat9)或/opt/tomcat/logs目录下,主要包括三类核心日志:
conf/server.xml)中的AccessLogValve标签,其directory(日志目录)和prefix(文件前缀)属性会明确指定访问日志的存储路径。2. 使用命令行工具查看与过滤日志
cat /path/to/logfile:直接输出整个日志文件内容(适合小文件);less /path/to/logfile:分页查看(支持上下翻页、搜索,按q退出);tail -f /path/to/logfile:实时监控日志新增内容(常用于跟踪线上问题,按Ctrl+C停止)。grep 'ERROR' /path/to/logfile:提取所有包含“ERROR”的行(聚焦严重问题);grep -i 'warning' /path/to/logfile:忽略大小写查找“warning”(关注潜在问题);awk '{print $4}' /path/to/access_log | cut -d: -f1 | sort | uniq -c | sort -nr:统计访问日志中各时间段的请求数(分析流量高峰)。3. 分析日志中的关键内容
ERROR(致命错误,如服务崩溃)和WARN(警告,如资源不足)级别的日志,这些通常是问题的核心线索。YYYY-MM-DD HH:MM:SS格式开头,通过时间戳可快速关联问题发生的具体时间(如服务器重启、用户操作触发异常)。java.lang.NullPointerException)及堆栈轨迹(从异常发生点回溯至调用源头),通过分析堆栈中的类名、方法名可定位代码问题(如空指针引用、数据库连接失败)。java.net.BindException: Address already in use(Tomcat绑定的端口已被其他进程占用,需修改server.xml中的port属性或终止占用进程);java.lang.OutOfMemoryError(JVM堆内存不足,需调整catalina.sh中的JAVA_OPTS参数,如-Xms512m -Xmx1024m);java.lang.NoClassDefFoundError(缺少依赖的JAR文件,需将JAR包放入WEB-INF/lib目录或Tomcat的lib目录);java.sql.SQLException: Access denied for user(用户名/密码错误)或Communications link failure(数据库服务未启动、网络不通)。4. 利用日志分析工具提升效率
对于大规模或长期运行的Tomcat日志,手动分析效率低下,可使用以下工具自动化处理:
access_log和catalina.out格式);ERROR级别筛选),支持告警通知(如邮件、Slack)。index=tomcat sourcetype=catalina error),适合企业级复杂日志分析。5. 日志维护与管理
logrotate工具自动分割日志文件(避免单个文件过大),编辑/etc/logrotate.d/tomcat文件,添加如下配置:/var/log/tomcat/*.log {
daily # 每天分割
missingok # 忽略缺失文件
rotate 7 # 保留最近7份
compress # 压缩旧日志
notifempty # 空日志不分割
create 640 root adm # 新日志权限
}
conf/logging.properties文件,调整对应logger的级别(如将org.apache.catalina.level从INFO改为DEBUG),但生产环境建议保持INFO或WARN以减少日志量。