温馨提示×

linux下tomcat日志如何分割

小樊
43
2026-10-23 03:57:37
栏目: 智能运维

在 Linux 下,Tomcat 日志分割常见有 三种主流方案,从简单到专业依次是:


一、使用 cronolog(最常用、最简单)

1. 安装 cronolog

# CentOS
yum install cronolog -y

# Ubuntu / Debian
apt-get install cronolog -y

2. 修改 catalina.sh

找到 CATALINA_OUT 相关输出位置,一般是:

CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out

将其改为:

CATALINA_OUT="/usr/sbin/cronolog $CATALINA_BASE/logs/catalina.%Y-%m-%d.out"

3. 修改启动输出方式

在 catalina.sh 中,将:

>> "$CATALINA_OUT" 2>&1 &

改为:

2>&1 | /usr/sbin/cronolog $CATALINA_BASE/logs/catalina.%Y-%m-%d.out &

✅ 效果:

catalina.2026-01-21.out
catalina.2026-01-22.out

二、使用 logrotate(系统级,推荐生产环境)

1. 创建 logrotate 配置

vi /etc/logrotate.d/tomcat

示例:

/opt/tomcat/logs/catalina.out {
    daily
    rotate 30
    missingok
    notifempty
    compress
    copytruncate
}

2. 参数说明

  • daily:每天分割
  • rotate 30:保留 30 天
  • compress:压缩旧日志
  • copytruncate:不重启 Tomcat 截断日志(关键)

3. 手动测试

logrotate -f /etc/logrotate.d/tomcat

✅ 优点:

  • 不需要改 Tomcat 源码
  • 系统级统一管理

三、使用 logging.properties(JULI,按大小/日期)

Tomcat 自带 java.util.logging

修改:

vi $TOMCAT_HOME/conf/logging.properties

示例:

handlers = 1catalina.org.apache.juli.FileHandler

1catalina.org.apache.juli.FileHandler.level = FINE
1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.FileHandler.prefix = catalina.

⚠️ 默认不支持自动按天分割,一般配合 logrotate 使用。


四、推荐方案总结

场景 推荐方式
简单快速 cronolog
生产环境 logrotate
不修改 Tomcat logrotate

如果你告诉我:

  • Tomcat 版本
  • 是否 Docker
  • 想按「天 / 大小 / 小时」

我可以给你一份可直接用的配置。

0 踩