首页主机资讯Tomcat日志切割与归档方法

Tomcat日志切割与归档方法

时间2025-12-15 18:31:03发布访客分类主机资讯浏览1339
导读:Tomcat日志切割与归档方法 一 常用方案总览 下表对比三种主流做法,便于按环境选择: 方案 适用场景 关键要点 优点 注意点 logrotate 系统自带、统一运维管理 对catalina.out使用 copytrun...

Tomcat日志切割与归档方法

一 常用方案总览

  • 下表对比三种主流做法,便于按环境选择:
方案 适用场景 关键要点 优点 注意点
logrotate 系统自带、统一运维管理 catalina.out使用 copytruncate,按天轮转并压缩归档 简单、稳定、与系统日志策略一致 需理解 copytruncate 与 create 的差异
cronolog 希望按时间自动命名输出 catalina.sh 将 stdout/stderr 通过管道交给 cronolog 按日生成文件,无需额外轮转工具 修改启动脚本,注意路径与权限
Log4j 按天切分 应用侧精细控制 使用 DailyRollingFileAppender 输出到 catalina、localhost 等 灵活、可定制格式与级别 需引入 log4j 相关 jar 并调整配置

以上三种方式均为业界常用做法,可单独或组合使用(例如:cronolog 负责 catalina.out,Log4j 负责业务日志)。

二 方案一 Logrotate 切割 catalina.out(系统自带,推荐)

  • 基本配置示例(创建文件:/etc/logrotate.d/tomcat
/path/to/tomcat/logs/catalina.out {

    daily
    rotate 30
    missingok
    dateext
    compress
    notifempty
    copytruncate
}
    
  • 关键参数说明
    • daily/weekly/monthly:按天/周/月轮转
    • rotate N:保留最近 N 个归档
    • dateext:归档后缀加日期(如:catalina.out-2025-12-15)
    • compress:用 gzip 压缩归档
    • copytruncate:复制当前日志并截断,适用于被进程持续打开的文件(如 catalina.out)
    • missingok:日志不存在时不报错
    • notifempty:空文件不轮转
  • 测试与执行
    • 预演:/usr/sbin/logrotate -d /etc/logrotate.d/tomcat
    • 强制执行:/usr/sbin/logrotate -f /etc/logrotate.d/tomcat
  • 执行时间说明
    • logrotate 通常由 /etc/cron.daily/logrotate 触发,实际执行时间由系统的 cron/anacron 决定;如需自定义时间,可在 crontab 中直接调度 logrotate(例如每天 23:59 执行)。

三 方案二 Cronolog 按时间命名 catalina.out

  • 安装 cronolog
    • CentOS/RHEL:yum install -y cronolog
    • 或源码安装:./configure & & make & & make install,默认路径常为 /usr/local/sbin/cronolog
  • 修改 Tomcat 启动脚本(bin/catalina.sh
    • 备份原文件:cp catalina.sh catalina.sh.bak
    • 找到执行 nohup 的一行,将标准输出通过管道交给 cronolog,例如:
org.apache.catalina.startup.Bootstrap "$@" start 2>
    &
    1 \
  | /usr/local/sbin/cronolog "$CATALINA_BASE/logs/catalina-%Y-%m-%d.out" >
    >
     /dev/null &

  • 可选:注释或删除脚本中创建 $CATALINA_OUT 的 touch 语句,避免冲突
  • 重启 Tomcat
    • 生效后将在 logs/ 下生成按日期命名的文件(如:catalina-2025-12-15.out)
  • 说明
    • 该方式直接让 Tomcat 按日期输出,无需后续轮转;若需压缩归档,可配合系统的 logrotate 对生成的 .out 文件再做压缩与清理。

四 方案三 Log4j 按天切分 Tomcat 内部日志

  • 适用:希望 catalina、localhost、manager、host-manager 等内部日志也按天切分
  • 步骤
    • 将依赖放入 $CATALINA_HOME/liblog4j-1.2.17.jar、tomcat-juli.jar、tomcat-juli-adapters.jar
    • $CATALINA_HOME/lib/ 新建 log4j.properties(示例):
log4j.rootLogger=INFO, CATALINA
log4j.appender.CATALINA=org.apache.log4j.DailyRollingFileAppender
log4j.appender.CATALINA.File=${
catalina.base}
/logs/catalina
log4j.appender.CATALINA.Append=true
log4j.appender.CATALINA.Encoding=UTF-8
log4j.appender.CATALINA.DatePattern='.'yyyy-MM-dd'.log'
log4j.appender.CATALINA.layout=org.apache.log4j.PatternLayout
log4j.appender.CATALINA.layout.ConversionPattern=%d [%t] %-5p %c- %m%n

log4j.appender.LOCALHOST=org.apache.log4j.DailyRollingFileAppender
log4j.appender.LOCALHOST.File=${
catalina.base}
    /logs/localhost
log4j.appender.LOCALHOST.Append=true
log4j.appender.LOCALHOST.Encoding=UTF-8
log4j.appender.LOCALHOST.DatePattern='.'yyyy-MM-dd'.log'
log4j.appender.LOCALHOST.layout=org.apache.log4j.PatternLayout
log4j.appender.LOCALHOST.layout.ConversionPattern=%d [%t] %-5p %c- %m%n

# 可按需添加 MANAGER / HOST-MANAGER
  • 使 Tomcat 使用 Log4j:在 conf/context.xml 的 上添加属性:swallowOutput=“true”,并删除或重命名 conf/logging.properties(避免 JUL 与 log4j 冲突)
  • 重启 Tomcat 后,catalina、localhost 等将生成按日期切分的日志文件。

五 归档与清理实践

  • 自动清理旧日志
    • 使用 find 定期删除 N 天前的 .log/.gz 文件(示例保留 30 天):
find /path/to/tomcat/logs -type f \( -name "*.log" -o -name "*.gz" \) -mtime +30 -delete
  • 加入 crontab 每日执行(如 00:00):
0 0 * * * /usr/bin/find /path/to/tomcat/logs -type f \( -name "*.log" -o -name "*.gz" \) -mtime +30 -delete
  • 备份归档
    • 将归档日志打包并转移到备份目录或对象存储(示例):
tar czvf /backup/tomcat_logs_$(date +%F).tar.gz -C /path/to/tomcat/logs .
  • 注意事项
    • 清理或迁移前建议先备份;清理大量日志时避免一次性删除过多文件,分批进行更稳妥
    • 若使用 copytruncate,无需重启 Tomcat;若改用 create 方式,可能需要发送信号让应用重新打开日志文件(Tomcat 使用 JUL 时通常配合 swallowOutput 与 Log4j 更顺畅)。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Tomcat日志切割与归档方法
本文地址: https://pptw.com/jishu/771904.html
Linux下Tomcat日志轮转策略 如何通过ulimit提高Ubuntu稳定性

游客 回复需填写必要信息