如何设置Tomcat日志轮转周期
导读:Tomcat日志轮转周期设置指南 一、Linux系统级方案 logrotate(推荐) 适用对象:控制 catalina.out 等标准输出日志,系统级统一维护,稳定可靠。 配置步骤 创建配置文件:在 /etc/logrotate.d/...
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 天):
要点:< ?xml version="1.0" encoding="UTF-8"?> < Configuration status="WARN"> < Appenders> < RollingFile name="RollingFile" fileName="logs/app.log" filePattern="logs/app-%d{ yyyy-MM-dd} .log.gz"> < PatternLayout pattern="%d{ yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{ 36} - %msg%n"/> < Policies> < TimeBasedTriggeringPolicy interval="1" modulate="true"/> < /Policies> < DefaultRolloverStrategy max="30"/> < /RollingFile> < /Appenders> < Loggers> < Root level="info"> < AppenderRef ref="RollingFile"/> < /Root> < /Loggers> < /Configuration>- 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 强制执行一次;观察归档文件是否按预期生成与压缩。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何设置Tomcat日志轮转周期
本文地址: https://pptw.com/jishu/754005.html
