要看Tomcat7运行日志,直接进入Tomcat安装目录下的logs文件夹,找到catalina.out或catalina.日期.log文件,用tail -f实时跟踪即可。 日志就是Tomcat的工作日记,它把每一次启动、每一个请求、每一次报错都记录下来,学会看日志,等于掌握了服务器排障的第一把钥匙。
tomcat7日志文件在哪找
Tomcat7的日志默认存放在一个固定位置,不需要额外配置就能找到,关键是先确认你的Tomcat环境变量指向哪里。
确认日志根目录的两种方式
- 通过环境变量定位:在Linux服务器上执行
echo $CATALINA_HOME或echo $CATALINA_BASE,输出路径就是Tomcat的主目录,日志就在主目录下的logs子文件夹里。 - 直接看启动脚本:找不到环境变量时,打开
bin/catalina.sh(Windows为catalina.bat),搜索CATALINA_BASE,脚本中定义的位置就是日志所在路径。
不同安装方式下的日志路径差异
- 源码包或二进制包解压安装:日志路径为
/usr/local/tomcat/logs这类自定义解压目录,比较直观。 - 通过yum或apt安装:日志会散落在
/var/log/tomcat7/或/var/log/tomcat/下,和Web应用部署目录分开,需要特别留意。 - Windows服务器:日志在解压目录下的
logs文件夹,比如D:tomcat7logs,与Linux结构一致。
如果你在默认位置找不到日志文件,多数情况下是conf/logging.properties文件修改了日志路径,打开这个配置文件,查看handlers开头的行的directory参数,那里写的就是当前生效的日志目录。
tomcat7查看日志命令有哪些
找到日志文件后,下一步就是用命令把它们读出来,不同场景下用不同命令,效率差距很大。
实时跟踪最新日志输出
这是排查线上问题时最高频的操作场景,适用于观察启动过程或请求处理状态。
# 跟踪catalina.out日志,Ctrl+C退出 tail -f /usr/local/tomcat/logs/catalina.out # 跟踪指定日期日志 tail -f /usr/local/tomcat/logs/catalina.2026-01-15.log
tail -f会持续刷新屏幕输出,适合一边操作一边观察Tomcat的响应,如果只想看最近一段时间的日志,使用
tail -n指定行数即可。
按关键字过滤日志内容
日志文件动辄几百M,直接翻找不现实,用grep命令配合关键词,能快速定位异常信息。
# 查找包含Exception的报错行 grep "Exception" /usr/local/tomcat/logs/catalina.out # 查找包含端口相关错误 grep "Address already in use" /usr/local/tomcat/logs/catalina.out # 查找某个时间段的日志 grep "2026-01-15 14:2" /usr/local/tomcat/logs/catalina.out
分页查看大日志文件
当日志文件特别大时,推荐用less命令,它支持翻页查看和关键词搜索,不会把大量内容一次性倒入屏幕。
# 分页查看日志 less /usr/local/tomcat/logs/catalina.out # 进入less界面后按/,输入关键词回车即可搜索 # 按q退出查看
Windows服务器日志查看方法
Windows上查看日志没有tail和grep这些原生命令,但有替代方案:
- 用记事本打开:只适合小文件,几百M的日志会直接卡死。
- 用Notepad++或VS Code打开:支持大文件打开和关键词搜索,其中VS Code按
Ctrl+F查找报错信息很方便。 - PowerShell中的Get-Content命令:
Get-Content D:tomcat7logscatalina.out -Tail 200可以查看末尾200行,加上-Wait参数能实现类似tail -f的效果。
tomcat7日志文件的类型和格式
Tomcat7的logs目录下通常有多个日志文件,职责各不相同,搞清楚每个文件的用途,才能快速找到需要的日志信息。
catalina.out和catalina.日期.log的区别
catalina.out是Tomcat的标准输出日志,记录了控制台打印的所有信息,包括系统输出、System.out.print打印的内容、以及未捕获的异常堆栈,无论启动还是运行,所有模块的日志都会汇总到这个文件。
catalina.日期.log是按天切割的运行日志,比如catalina.2026-01-15.log,它记录的是Tomcat核心生命周期事件,比如启动开始、连接器初始化、部署应用等,但不包含应用自己打印的信息。
两者的核心区别是:catalina.out更全面,catalina.日期.log
更专注于Tomcat自身状态。 排障时优先看catalina.out,因为它包含了所有信息。
localhost日志与访问日志的用途
- localhost.日期.log:记录Tomcat内部异常和Web应用部署时的详细错误,应用启动失败时,这个文件比
catalina.out描述得更具体,比如Servlet初始化失败、Context加载报错都会写在这里。 - localhost_access_log.日期.txt:HTTP访问日志,记录了每一次HTTP请求的IP、时间、请求方式、URL、返回状态码和响应字节数,想判断请求是否被正确处理,查看返回状态码是否为200就能快速判断。
- manager和host-manager日志:只有使用Tomcat管理界面时才会生成,记录控制台登入、部署、卸载等管理操作的痕迹。
日志级别怎么看
Tomcat7的日志级别从低到高分为SEVERE(严重错误)、WARNING(警告)、INFO(普通信息)、FINE(更详细信息),启动时默认打印INFO级别信息,运行中看到INFO是正常情况,看到SEVERE或WARNING才需要关注。
tomcat7启动报错日志怎么排查
日志最容易发挥价值的场景就是启动失败,按下面的顺序操作,大多能找出问题根因。
第一步:先看最后50行
启动报错时,错误信息通常集中在日志文件最后部分,执行tail -n 50 /usr/local/tomcat/logs/catalina.out直接定位到报错区域,重点找SEVERE和Exception两个关键词。
第二步:分析高频启动错误
- 端口被占用的报错特征:日志中出现
Address already in use: JVM_Bind,表示8080或其他端口被其他进程占用。 - 内存溢出报错特征:日志中出现
OutOfMemoryError或PermGen space,表示JVM内存分配不足,需要调整catalina.sh中的JAVA_OPTS参数,比如-Xms512m -Xmx1024m。 - 应用部署失败报错特征:
localhost.日期.log中出现Exception sending context initialized event to listener instance of class,说明某个Web应用在初始化阶段抛出异常,具体原因在该异常堆栈下方紧跟着显示。
第三步:结合多日志文件交叉验证
有时候单看catalina.out信息不完整,需要同时打开localhost.日期.log对比,比如启动时一个应用报错,
catalina.out可能只写Application初始化失败,具体类名和行号则在localhost.日期.log中补充才是完整的偷懒做法。
日志乱码和文件过大怎么办
运维过程中有两个高频问题,顺便给个简洁的处理思路。
查看日志出现乱码
日志文件中出现中文乱码,通常是字符集编码不一致导致的,Tomcat7默认使用UTF-8,而部分Windows服务器系统编码是GBK,解决方法是在catalina.sh或catalina.bat的JAVA_OPTS变量中追加-Dfile.encoding=UTF-8,重启后日志即正常显示。
也可以直接修改conf/logging.properties,将java.util.logging.ConsoleHandler.encoding的默认值改为UTF-8。
日志文件增长过快导致磁盘满
catalina.out默认不会自动切割,长时间运行后会占据大量磁盘空间,行业共识认为,日志占据磁盘空间过大是影响Tomcat集群稳定性的常见隐患,可以使用Linux的logrotate工具按天或按大小轮转日志,它在/etc/logrotate.d/目录添加规则后即可生效,多数情况下,设置日志文件超过200M自动滚动是合理的阈值。
常见问题解答
tomcat7日志被误删了怎么办?
如果Tomcat正在运行,日志文件被删除后,文件句柄仍被进程持有,catalina.out还会继续写入,但ls命令看不到,重启Tomcat后日志文件会重新创建,需要注意,直接删除仍被占用的日志文件,磁盘空间不会立即释放,必须重启进程或清空文件内容(cat /dev/null > catalina.out)才能回收空间。
不重启Tomcat能清空日志吗?
能,执行cat /dev/null > /usr/local/tomcat/logs/catalina.out即可清空内容而不影响Tomcat运行,文件句柄不受影响,新的日志会继续追加写入,这个方法也常用于日志文件过大时快速释放磁盘空间。
tomcat7日志怎么看应用是否启动成功?
在catalina.out中搜索Server startup in字符串,如果出现类似Server startup in [4567] milliseconds的提示,说明应用容器启动成功,同时查看localhost_access_log日志中是否出现对应用根路径的请求记录,如果启动后在访问日志中出现HTTP状态码200的记录,说明应用已正常对外服务。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/708597.html





