阅读量:2
Tomcat日志轮转周期设置指南
一、Linux系统级方案 logrotate(推荐)
- 适用对象:控制 catalina.out 等标准输出日志,系统级统一维护,稳定可靠。
- 配置步骤
- 创建配置文件:在 /etc/logrotate.d/ 下新建文件,例如 tomcat。
- 写入规则(示例为按天轮转,保留7天):
关键参数说明:/opt/tomcat/logs/catalina.out { daily rotate 7 compress missingok notifempty copytruncate create 640 tomcat tomcat }- daily/weekly/monthly:设置轮转周期(天/周/月)。
- rotate N:保留最近 N 个归档。
- compress:归档后压缩(常用 gzip)。
- missingok:日志不存在时不报错。
- notifempty:日志为空时不轮转。
- copytruncate:复制后截断原文件,避免重启应用;若使用外部日志框架,可改用 create 重建文件。
- create 640 tomcat tomcat:新建日志文件权限与属主属组。
- 调试与生效
- 调试:执行
sudo logrotate -d /etc/logrotate.d/tomcat(仅校验,不真正轮转)。 - 强制执行一次:执行
sudo logrotate -f /etc/logrotate.d/tomcat。
- 调试:执行
- 执行频率
- logrotate 通常由系统的 cron 每日任务触发(如 /etc/cron.daily/logrotate),无需额外配置即可按日运行。
二、按大小轮转与清理脚本
- 若希望按大小触发,可结合 size 指令与脚本清理:
/opt/tomcat/logs/catalina.out { size 100M rotate 7 compress missingok notifempty copytruncate } - 也可编写清理脚本定期删除旧日志(示例保留 7 天):
通过 crontab 每天 02:00 执行:#!/usr/bin/env bash LOG_DIR="/opt/tomcat/logs" KEEP_DAYS=7 find "$LOG_DIR" -type f -name "*.out" -mtime +$KEEP_DAYS -delete0 2 * * * /path/to/clean_tomcat_logs.sh - 说明:按大小轮转适合高流量场景;脚本清理便于跨目录、多实例统一治理。
三、应用内日志框架按日期滚动(Tomcat 10 与 Log4j 2 示例)
- 适用对象:使用 Log4j 2 的应用日志,可精确按天/小时滚动并控制保留份数。
- 示例配置(按天滚动,保留 30 天):
要点:- TimeBasedTriggeringPolicy interval=“1” 表示按天滚动;modulate=“true” 使滚动边界对齐到自然时间边界。
- DefaultRolloverStrategy max=“30” 控制最多保留 30 个归档。
四、常见问题与注意事项
- 选择策略
- 仅管控 catalina.out:优先用 logrotate(系统级、低侵入)。
- 应用日志需按天/小时滚动:在应用内用 Log4j 2 RollingFileAppender 配置。
- 避免日志丢失
- 使用 copytruncate 可避免重启 Tomcat;若改用 create,需在 postrotate 中通知应用重新打开日志文件(如使用 kill -HUP 或应用支持的重新打开机制)。
- 权限与路径
- 确保 create 指定的用户/组对日志目录有写权限;路径需与实际安装一致(如 /opt/tomcat/logs/catalina.out 或 /var/log/tomcat/)。
- 验证与观测
- 先用 logrotate -d 校验,再用 -f 强制执行一次;观察归档文件是否按预期生成与压缩。
以上就是关于“如何设置Tomcat日志轮转周期”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm