温馨提示×

Ubuntu Tomcat日志如何查看分析

小樊
34
2026-01-01 16:57:17
栏目: 智能运维

Ubuntu Tomcat 日志查看与分析

一 日志位置与关键文件

  • 常见日志目录:$CATALINA_HOME/logs(Tomcat 安装目录下)、/var/log/tomcat/opt/tomcat/logs。如不确定安装目录,可执行:echo $CATALINA_HOME
  • 关键日志文件与作用:
    • catalina.out:标准输出与错误输出(启动、运行期未捕获异常等)。
    • localhost..log:应用部署到 localhost 域下的日志(应用异常栈、初始化日志)。
    • localhost_access_log..txt:访问日志(由 AccessLogValve 产生,记录请求时间、来源、方法、状态码、耗时等)。
    • 管理应用日志:manager.loghost-manager.log
  • 访问日志路径与命名由 conf/server.xml 中的 AccessLogValve 决定,可查看其 directory/prefix/suffix 属性确认实际位置与文件名格式。

二 快速查看与过滤

  • 实时查看:
    • tail -f $CATALINA_HOME/logs/catalina.out(实时跟踪控制台输出)
    • less +F $CATALINA_HOME/logs/catalina.out(进入 less 后按 F 键跟踪)
  • 按关键字过滤:
    • grep -i "error\|exception\|fail" $CATALINA_HOME/logs/catalina.out
    • 忽略大小写并高亮:grep -i --color=auto "error" $CATALINA_HOME/logs/catalina.out
  • 查看应用日志与访问日志:
    • less $CATALINA_HOME/logs/localhost.*.log
    • tail -f $CATALINA_HOME/logs/localhost_access_log.*.txt
  • 按时间窗口提取(catalina.out 每行以日期开头时适用):
    • sed -n '/^2025-03-03/,/^2025-03-04/p' $CATALINA_HOME/logs/catalina.out > slice_20250303.out
  • 统计与排查辅助:
    • 行数统计:wc -l $CATALINA_HOME/logs/catalina.out
    • 进程与端口:ps aux | grep tomcatss -ltnp | grep 8080
  • 若以 systemd 管理 Tomcat,可用:sudo journalctl -u tomcat.service -f(实时查看服务日志)

三 定位常见问题的日志线索

  • 启动失败或启动即退出:优先查看 catalina.out(JVM 启动参数、类加载、端口冲突、Spring/应用初始化异常等),并配合 localhost..log 查看应用级异常栈。
  • 访问异常与性能问题:查看 localhost_access_log 中的 HTTP 状态码响应时间User-Agent 等字段,定位 4xx/5xx 的来源与高峰时段。
  • 配置与编码问题:检查 conf/server.xmlURIEncoding=“UTF-8” 等连接器参数,避免中文乱码;必要时核对应用与容器的编码一致性。
  • 资源与连通性:结合系统命令(psss/netstat)排查进程存活与端口占用,确认防火墙与安全组策略。

四 日志配置与轮转最佳实践

  • 日志级别:在 conf/logging.properties 调整 java.util.logging 级别(如将部分包设为 WARN/ERROR 减少噪声,开发期可临时提升为 DEBUG/INFO)。
  • 访问日志:在 conf/server.xml 配置 AccessLogValve(设置 directory/prefix/suffix/pattern),便于按天/按应用拆分与长期保留。
  • 日志轮转:
    • 使用 logrotate 管理 catalina.out 等文件,示例(/etc/logrotate.d/tomcat):
      /opt/tomcat/logs/catalina.out {
        daily
        rotate 7
        compress
        missingok
        notifempty
        copytruncate
      }
      
    • 或使用 cronolog 按日期自动分割日志,避免单文件过大。
  • GC 日志:在 catalina.sh/catalina.conf 中开启 -XX:+PrintGC-XX:+PrintGCDetails-Xloggc: 等参数,配合 GC 分析工具定位内存与停顿问题。
  • 集中化与可视化:将 Tomcat 日志接入 Rsyslog 或直接发送至 ELK/Graylog,实现多实例统一采集、检索、告警与可视化。

五 高效分析命令小抄

  • 实时跟踪错误并高亮:tail -f $CATALINA_HOME/logs/catalina.out | grep -i --color=auto "error\|exception"
  • 统计 5xx 错误数:grep " 5[0-9][0-9] " $CATALINA_HOME/logs/localhost_access_log.*.txt | wc -l
  • Top N 客户端 IP:awk '{print $1}' $CATALINA_HOME/logs/localhost_access_log.*.txt | sort | uniq -c | sort -nr | head
  • 按小时统计请求数(访问日志时间格式为 HH:MM:SS 时):
    awk -F: '{print $1":"$2}' $CATALINA_HOME/logs/localhost_access_log.*.txt | sort | uniq -c | sort -nr
  • 导出某天日志:sed -n '/^2025-03-03/,/^2025-03-04/p' $CATALINA_HOME/logs/catalina.out > catalina_20250303.out
  • 查看最近的异常栈(含上下文 10 行):grep -n -A10 -B5 "Exception" $CATALINA_HOME/logs/localhost.*.log

0