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

如何关闭Tomcat 8.5的所有日志轮转以兼容logrotate

解决Tomcat 8.5自带日志轮转与logrotate冲突的问题

我来帮你搞定这个日志轮转冲突的问题!Tomcat的日志分成两类管理,你已经找到了自定义访问日志的关闭方法,剩下的几个系统日志确实需要通过logging.properties来调整,具体操作如下:

1. 确认自定义访问日志的轮转已关闭

你提到的mysite_access日志是在server.xml里的<AccessLog>配置的,确保给这个标签加上rotatable="false"属性,这样它就不会自动生成带日期后缀的文件,保持固定文件名让logrotate处理:

<AccessLog className="org.apache.catalina.valves.AccessLogValve"
           directory="logs"
           prefix="mysite_access"
           suffix=".log"
           pattern="%h %l %u %t &quot;%r&quot; %s %b"
           rotatable="false"/> <!-- 关键配置 -->

2. 关闭JUL管理的系统日志轮转

catalina、localhost、manager、host-manager这些日志是由Tomcat基于Java Util Logging(JUL)扩展的org.apache.juli.FileHandler管理的,默认会自动轮转。要关闭它们的自带轮转,需要修改Tomcat安装目录/conf/logging.properties文件,给每个对应日志的Handler添加rotatable=false配置:

找到文件里类似下面的Handler配置块,逐个添加rotatable=false:

# Catalina日志Handler
1catalina.org.apache.juli.FileHandler.level = FINE
1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.FileHandler.prefix = catalina.
1catalina.org.apache.juli.FileHandler.rotatable = false <!-- 新增这行 -->

# Localhost日志Handler
2localhost.org.apache.juli.FileHandler.level = FINE
2localhost.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
2localhost.org.apache.juli.FileHandler.prefix = localhost.
2localhost.org.apache.juli.FileHandler.rotatable = false <!-- 新增这行 -->

# Manager日志Handler
3manager.org.apache.juli.FileHandler.level = FINE
3manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
3manager.org.apache.juli.FileHandler.prefix = manager.
3manager.org.apache.juli.FileHandler.rotatable = false <!-- 新增这行 -->

# Host-Manager日志Handler
4host-manager.org.apache.juli.FileHandler.level = FINE
4host-manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
4host-manager.org.apache.juli.FileHandler.prefix = host-manager.
4host-manager.org.apache.juli.FileHandler.rotatable = false <!-- 新增这行 -->

修改完后重启Tomcat,这些日志就会停止生成带日期的后缀文件,保持catalina.log、localhost.log这样的固定文件名。

3. 配置logrotate规则处理Tomcat日志

最后给Tomcat配置logrotate规则,比如创建/etc/logrotate.d/tomcat8.5文件,内容示例如下(根据你的实际路径和用户组调整):

/opt/tomcat/logs/*.log {
    daily          # 每日轮转
    rotate 7       # 保留最近7天的日志
    compress       # 压缩旧日志
    missingok      # 日志文件不存在时不报错
    notifempty     # 空文件不轮转
    create 640 tomcat tomcat  # 轮转后创建新文件的权限和所属用户组
    postrotate
        # 向Tomcat进程发送USR1信号,让它重新打开日志文件,避免丢失日志
        PID=$(cat /opt/tomcat/tomcat.pid)
        kill -USR1 $PID
    endscript
}

注意事项

  • 修改配置前记得备份原文件(server.xml和logging.properties),防止配置出错。
  • 确认Tomcat的tomcat.pid文件路径正确,如果你的Tomcat没有自动生成pid文件,可以在启动脚本里添加-Dcatalina.pid=/opt/tomcat/tomcat.pid参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:38:14