在 Apache Tomcat 中,日志路径并不是由某一个统一配置决定的,而是分散在几个地方。下面按最常见、最规范的方式给你说明如何修改。
Tomcat 使用 JULI(java.util.logging) 作为默认日志实现。
配置文件位置:
$TOMCAT_HOME/conf/logging.properties
默认类似:
1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
改为你自己的目录:
1catalina.org.apache.juli.AsyncFileHandler.directory = /data/tomcat/logs
同样可以修改其他日志:
2localhost.org.apache.juli.AsyncFileHandler.directory = /data/tomcat/logs
3manager.org.apache.juli.AsyncFileHandler.directory = /data/tomcat/logs
4host-manager.org.apache.juli.AsyncFileHandler.directory = /data/tomcat/logs
✅ 重启 Tomcat 生效
catalina.out 不是 logging.properties 控制的,而是由启动脚本决定。
编辑:
$TOMCAT_HOME/bin/catalina.sh
找到:
CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out
改为:
CATALINA_OUT="/data/tomcat/logs/catalina.out"
✅ 重启 Tomcat 生效
如果不存在就新建:
$TOMCAT_HOME/bin/setenv.sh
内容:
export CATALINA_OUT="/data/tomcat/logs/catalina.out"
赋予执行权限:
chmod +x setenv.sh
如果你使用 Log4j2 或 Logback,日志路径由它们自己控制。
<File name="FileAppender" fileName="/data/tomcat/logs/app.log">
<PatternLayout pattern="%d %p %c - %m%n"/>
</File>
<file>/data/tomcat/logs/app.log</file>
⚠️ 此时 Tomcat 自带 logging.properties 基本不再生效
如果是 systemd 启动 Tomcat,还需检查:
/etc/systemd/system/tomcat.service
是否限制了日志目录(如 ReadWritePaths)。
| 问题 | 原因 |
|---|---|
| 修改不生效 | 没重启 Tomcat |
| catalina.out 仍在旧目录 | 只改了 logging.properties |
| 没权限 | 目录权限不足 |
| 日志不滚动 | 使用 logrotate 或日志框架 |
✅ catalina.out → 改 catalina.sh / setenv.sh
✅ Tomcat 运行日志 → 改 conf/logging.properties
✅ 应用日志 → 用 Log4j2 / Logback
如果你愿意,可以告诉我:
我可以给你一份完全贴合你环境的配置示例。