Tomcat 运行时日志路径定位指南
当你运行 tail -f /apache-tomcat-8.5.9/logs/blog.log 时,看到的是 Tomcat 实际运行时产生的日志,而这与你以为的部署路径 /root/13/tomcat/tomcat8/apache-tomcat-8.5.9/ 不一致。这种情况通常是由于启动了错误的 Tomcat 实例导致的。
Spring Boot 日志为何写入 /apache-tomcat-8.5.9/logs/blog.log?
因为你的 Spring Boot 应用使用了 logback.xml 配置文件,该文件位于:
/root/13/tomcat/tomcat8/apache-tomcat-8.5.9/webapps/ROOT_spring/WEB-INF/classes/logback.xml
在这个配置中,日志输出路径通常定义为:
${catalina.base}/logs/blog.log
${catalina.base} 是 Tomcat 运行时的环境变量,指向实际启动的 Tomcat 根目录。这里它指向了 /apache-tomcat-8.5.9,而不是你上传程序时的路径。
两个 Tomcat 路径为何不同?
你启动 Tomcat 时使用的命令是:
/apache-tomcat-8.5.9/bin/startup.sh
而不是:
/root/13/tomcat/tomcat8/apache-tomcat-8.5.9/bin/startup.sh
因此 catalina.base 被设置为 /apache-tomcat-8.5.9
如何确认 Tomcat 运行目录?
执行以下命令查看当前 Tomcat 进程:
ps -ef | grep tomcat
输出中会包含类似的信息:
-Dcatalina.base=/apache-tomcat-8.5.9
这表明日志路径是由这个运行中的 Tomcat 实例决定的。
Spring Boot 日志文件名为何是 blog.log?
在 logback.xml 中有类似如下的定义:
<file>logs/blog.log</file>
因此日志会写入 catalina.base/logs/blog.log,即完整的路径为:
/apache-tomcat-8.5.9/logs/blog.log
为什么 /root/13/.../logs 下没有日志?
- 路径
/root/13/tomcat/tomcat8/apache-tomcat-8.5.9/的 Tomcat 未被启动 catalina.base指向的是另一个 Tomcat 实例(/apache-tomcat-8.5.9)- 运行时日志不会写入未启动的目录
/apache-tomcat-8.5.9 版本
下一步操作建议
1. 确认当前运行的 Tomcat 路径
ps -ef | grep java
查找输出中的 -Dcatalina.base= 参数,将其值记录下来,以便确认实际启动的是哪个目录。
2. 整理目录关系
| 目录 | 用途 | 运行状态 |
|---|---|---|
/apache-tomcat-8.5.9/ |
实际启动的 Tomcat | 运行中 |
/root/13/tomcat/tomcat8/apache-tomcat-8.5.9/ |
你假设的部署目录 | 未运行 |
3. 日志位置总结
- 应用日志 →
/apache-tomcat-8.5.9/logs/blog.log - Tomcat 输出日志 →
/apache-tomcat-8.5.9/logs/catalina.out
如果你提供启动命令,可以帮助你分析为何启动的是另一个 Tomcat。