一、通过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
,因其功能更强大且易于维护;