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

Apache Tomcat 9.0.75 stdout日志删除或轮转方案求助

解决Apache Tomcat 9.0.75的stdout日志问题

一、彻底关闭stdout日志输出

Tomcat的stdout.log和stderr.log是由启动脚本(如catalina.sh/catalina.bat)直接重定向生成的,单纯修改logging.properties不会生效,需要调整启动脚本:

Linux/macOS环境(修改catalina.sh)

  1. 打开bin/catalina.sh文件
  2. 找到末尾附近的启动命令段,原内容类似:
    "$_RUNJAVA" "$LOGGING_CONFIG" $JAVA_OPTS $CATALINA_OPTS \
      -Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" \
      -Dcatalina.base="$CATALINA_BASE" \
      -Dcatalina.home="$CATALINA_HOME" \
      -Djava.io.tmpdir="$CATALINA_TMPDIR" \
      org.apache.catalina.startup.Bootstrap "$@" start \
      >> "$CATALINA_OUT" 2>&1 "&"
    
  3. 将重定向部分>> "$CATALINA_OUT" 2>&1替换为>/dev/null 2>&1,修改后:
    "$_RUNJAVA" "$LOGGING_CONFIG" $JAVA_OPTS $CATALINA_OPTS \
      -Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" \
      -Dcatalina.base="$CATALINA_BASE" \
      -Dcatalina.home="$CATALINA_HOME" \
      -Djava.io.tmpdir="$CATALINA_TMPDIR" \
      org.apache.catalina.startup.Bootstrap "$@" start \
      >/dev/null 2>&1 "&"
    
  4. 保存文件后重启Tomcat,stdout.log将停止生成

Windows环境(修改catalina.bat)

  1. 打开bin/catalina.bat文件
  2. 找到启动命令行,原内容类似:
    %_EXECJAVA% %LOGGING_CONFIG% %JAVA_OPTS% %CATALINA_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" org.apache.catalina.startup.Bootstrap %CMD_LINE_ARGS% start >> "%CATALINA_OUT%" 2>&1
    
  3. 将>> "%CATALINA_OUT%" 2>&1替换为>nul 2>&1,修改后:
    %_EXECJAVA% %LOGGING_CONFIG% %JAVA_OPTS% %CATALINA_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" org.apache.catalina.startup.Bootstrap %CMD_LINE_ARGS% start >nul 2>&1
    
  4. 重启Tomcat即可停止生成stdout.log

二、配置stdout日志按日/按大小轮转

如果需要保留日志并实现自动轮转,可使用Tomcat自带的org.apache.juli.FileHandler替代默认重定向,步骤如下:

  1. 修改conf/logging.properties文件:
    • 注释或删除原有java.util.logging.ConsoleHandler相关配置
    • 添加以下轮转配置:
      # 定义stdout的轮转Handler
      handlers = 1stdout.org.apache.juli.FileHandler
      
      # 轮转规则:单个日志最大10MB,保留90天,最多保留100个文件,按日命名
      1stdout.org.apache.juli.FileHandler.level = FINE
      1stdout.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
      1stdout.org.apache.juli.FileHandler.prefix = stdout
      1stdout.org.apache.juli.FileHandler.suffix = .log
      1stdout.org.apache.juli.FileHandler.formatter = java.util.logging.SimpleFormatter
      1stdout.org.apache.juli.FileHandler.maxDays = 90
      1stdout.org.apache.juli.FileHandler.limit = 10485760
      1stdout.org.apache.juli.FileHandler.count = 100
      1stdout.org.apache.juli.FileHandler.append = true
      1stdout.org.apache.juli.FileHandler.encoding = UTF-8
      
      # 将root日志输出绑定到该Handler
      .level = INFO
      .handlers = 1stdout.org.apache.juli.FileHandler
      
  2. 修改启动脚本,取消默认输出重定向:
    • Linux/macOS:按关闭日志的步骤,将>> "$CATALINA_OUT" 2>&1替换为>/dev/null 2>&1
    • Windows:将>> "%CATALINA_OUT%" 2>&1替换为>nul 2>&1
  3. 重启Tomcat,日志将自动按配置规则轮转(如生成stdout.2024-05-20.log,达到大小限制也会自动分割)

注意事项

  • 修改启动脚本前建议备份原文件,避免操作失误导致Tomcat无法启动
  • 若使用Windows服务形式运行Tomcat,需通过tomcatw.exe配置界面的「Java」选项卡添加日志参数,并取消服务的输出重定向配置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 21:03:41