You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Tomcat禁用catalina.out后如何获取线程dump?

解决方案

一、控制catalina.out的日志增长

1. 让Log4j日志不再写入catalina.out

修改你的Log4j配置文件(log4j.properties或log4j2.xml),将原本输出到控制台(System.out/System.err)的日志重定向到单独的滚动日志文件,彻底切断Log4j与catalina.out的关联:

以log4j.properties为例:

# 定义滚动文件Appender
log4j.appender.appLog=org.apache.log4j.RollingFileAppender
log4j.appender.appLog.File=${catalina.base}/logs/application.log
log4j.appender.appLog.MaxFileSize=100MB
log4j.appender.appLog.MaxBackupIndex=10
log4j.appender.appLog.layout=org.apache.log4j.PatternLayout
log4j.appender.appLog.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

# 根日志仅输出到文件,移除控制台Appender
log4j.rootLogger=INFO, appLog

2. 配置catalina.out自动滚动(可选,无需禁用catalina.out)

如果不想完全丢弃catalina.out,可通过Tomcat自带的日志配置限制其大小并自动滚动,避免文件膨胀到GB级:

编辑Tomcat的conf/logging.properties,修改1catalina.org.apache.juli.FileHandler的参数:

handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler

# 配置catalina.out的滚动规则
1catalina.org.apache.juli.FileHandler.level = FINE
1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.FileHandler.prefix = catalina.
# 单个文件最大100MB,最多保留10个备份文件
1catalina.org.apache.juli.FileHandler.maxLength = 104857600
1catalina.org.apache.juli.FileHandler.count = 10
1catalina.org.apache.juli.FileHandler.formatter = java.util.logging.SimpleFormatter

二、解决kill -3线程dump的输出问题

方案1:保留catalina.out滚动配置(推荐)

如果采用上面的catalina.out自动滚动配置,无需设置CATALINA_OUT=/dev/null。此时执行kill -3 <PID>,线程dump会直接写入当前的catalina.out文件(或滚动后的catalina.1.log等文件),直接查看对应日志文件即可。

方案2:必须禁用catalina.out时的处理

如果一定要设置CATALINA_OUT=/dev/null,可通过修改Tomcat启动脚本,让JVM的System.out(线程dump的输出目标)单独重定向到指定文件:

编辑catalina.sh(Linux环境),找到启动Tomcat的执行语句,修改为:

# 将JVM标准输出重定向到线程dump专用文件,错误输出丢弃(或按需重定向)
exec "$PRGDIR"/"$EXECUTABLE" start "$@" 1>${catalina.base}/logs/thread_dump.log 2>/dev/null

之后执行kill -3 <PID>,线程dump会自动写入${catalina.base}/logs/thread_dump.log文件。

内容的提问来源于stack exchange,提问作者sushil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 20:21:10