一、通过Tomcat原生配置(logging.properties)设置日志轮转
Tomcat默认使用java.util.logging(JULI)框架管理日志,可通过修改conf/logging.properties文件配置轮转策略,适用于需要集成Tomcat原生日志体系的场景。
关键配置步骤及参数说明:
conf文件夹中的logging.properties文件(如/opt/tomcat/conf/logging.properties)。logging.properties.bak),便于后续恢复。java.util.logging.FileHandler相关配置项,核心参数如下:
pattern:日志文件命名模式,${catalina.base}表示Tomcat安装目录(如${catalina.base}/logs/catalina.%g.log,生成的文件名为catalina.1.log、catalina.2.log等);limit:单个日志文件的最大大小(单位:字节,如50000表示50KB,10485760表示10MB);count:保留的旧日志文件数量(如10表示保留10个历史文件);formatter:日志格式化器(推荐使用java.util.logging.SimpleFormatter,格式为yyyy-MM-dd HH:mm:ss)。java.util.logging.FileHandler.level = INFO
java.util.logging.FileHandler.pattern = ${catalina.base}/logs/catalina.%g.log
java.util.logging.FileHandler.limit = 10485760 # 10MB
java.util.logging.FileHandler.count = 10
java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter
./bin/shutdown.sh && ./bin/startup.sh)使配置生效。logs目录下的日志文件,确认是否按指定大小(如10MB)分割,并保留指定数量(如10个)的历史文件。二、通过Linux系统工具(logrotate)设置日志轮转
若服务器为Linux环境,可使用logrotate工具(系统自带)实现更灵活的日志轮转(如按天、压缩、延迟压缩等),适用于多Tomcat实例或需要系统级管理的场景。
关键配置步骤及参数说明:
/etc/logrotate.d/目录下新建tomcat文件(如sudo touch /etc/logrotate.d/tomcat)。catalina.out)添加以下配置(以/usr/local/tomcat/logs/catalina.out为例):/usr/local/tomcat/logs/catalina.out {
daily # 每天轮转一次(可选:weekly/monthly)
rotate 7 # 保留最近7份历史日志
compress # 压缩旧日志(如catalina.out.1.gz)
delaycompress # 延迟压缩(当前轮转的日志在下一次轮转时才压缩)
missingok # 日志文件不存在时不报错
notifempty # 日志为空时不轮转
copytruncate # 复制原日志后清空,避免重启Tomcat(适用于无法修改Tomcat配置的场景)
}
sudo logrotate -d /etc/logrotate.d/tomcat;sudo logrotate -f /etc/logrotate.d/tomcat。logrotate默认通过系统cron任务(/etc/cron.daily/logrotate)每天自动运行,无需额外配置。三、两种方式的对比与选择
| 维度 | logging.properties(JULI) | logrotate(系统工具) |
|---|---|---|
| 适用场景 | 需集成Tomcat原生日志体系、简单轮转需求 | Linux环境、复杂轮转需求(如按天、压缩) |
| 配置复杂度 | 较简单,仅需修改Tomcat配置文件 | 稍复杂,需熟悉logrotate语法 |
| 灵活性 | 依赖JULI框架,功能有限(如不支持按天轮转) | 更灵活,支持多种轮转策略(如按时间、大小) |
| 是否需要重启 | 需重启Tomcat | 无需重启Tomcat(copytruncate方式) |
注意事项:
logging.properties中的FileHandler路径与logrotate中的路径一致);logrotate,因其功能更强大且易于维护;