linux

Tomcat日志切割与归档方法

小樊
38
2025-12-15 07:48:52
栏目: 智能运维

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(系统自带,推荐)

/path/to/tomcat/logs/catalina.out {
    daily
    rotate 30
    missingok
    dateext
    compress
    notifempty
    copytruncate
}

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

org.apache.catalina.startup.Bootstrap "$@" start 2>&1 \
  | /usr/local/sbin/cronolog "$CATALINA_BASE/logs/catalina-%Y-%m-%d.out" >> /dev/null &

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

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

五 归档与清理实践

find /path/to/tomcat/logs -type f \( -name "*.log" -o -name "*.gz" \) -mtime +30 -delete
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 .

0
看了该问题的人还看了