当前位置:首页 > 技术 > 正文内容

Tomcat 运行时日志路径定位指南

访客 技术 2026年7月22日 28

当你运行 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)
  • 运行时日志不会写入未启动的目录
你当前环境中存在两个 Tomcat 副本,实际运行的是 /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。

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

linux screen 用法详情 (nohup 的替代方案)

一、screen 是什么?能干嘛?screen 是一个终端复用器,可以:在一个 SSH 会话中开多个“虚拟终端”SSH 断线后,程序仍然在后台运行随时重新连接到原来的会话特别适合:nohup 的替代方案跑脚本 / 爬虫 / 训练模型运维、远程开发二、安装 screen# CentOS / Rocky / Almayum install -y screen# Debian / Ubuntuapt i...

PHPStan 有什么用?怎么用?

PHPStan 是一个 PHP 的静态分析工具,在不运行代码的情况下就能帮你发现潜在问题,比如:传错类型(把 string 传给接受 int 的函数)访问不存在的属性 / 方法null 没处理好永远不会执行到的代码数组 key/值类型不一致返回值不符合声明注释和真实类型不匹配它非常适合:想提升代码质量、减少线上 bug、统一团队风格的人(尤其是中大型项目)。一、PHPStan 有什么用(通俗点说)...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。