阅读量:2
一、通过Tomcat原生配置文件(logging.properties)设置日志轮转
Tomcat的原生日志轮转可通过修改conf/logging.properties文件实现,适用于需要精细控制日志格式、级别及存储路径的场景。
1. 关键配置项说明
java.util.logging.FileHandler.pattern:定义日志文件的命名模式,常用变量包括%h(用户主目录)、%g(日志文件序号,用于滚动)。例如:${catalina.base}/logs/catalina.%g.out(日志将存储在Tomcat的logs目录下,命名为catalina.1.out、catalina.2.out等)。java.util.logging.FileHandler.limit:单个日志文件的最大大小(单位:字节)。例如:10485760表示10MB(10×1024×1024)。java.util.logging.FileHandler.count:保留的日志文件数量。例如:5表示保留最近5个日志文件,超过则删除最旧的。java.util.logging.FileHandler.formatter:日志格式化器,常用java.util.logging.SimpleFormatter(简单文本格式)。
2. 示例配置
# 控制台处理器配置(可选)
java.util.logging.ConsoleHandler.level = INFO
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
# 文件处理器配置(核心轮转设置)
java.util.logging.FileHandler.level = INFO
java.util.logging.FileHandler.pattern = ${catalina.base}/logs/catalina.%g.out
java.util.logging.FileHandler.limit = 10485760 # 10MB
java.util.logging.FileHandler.count = 5 # 保留5个文件
java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter
3. 生效步骤
修改完成后,保存logging.properties文件,然后重启Tomcat(./shutdown.sh → ./startup.sh),配置即可生效。
二、通过Linux系统工具(logrotate)设置日志轮转
logrotate是Linux系统自带的日志管理工具,适用于需要自动化切割、压缩、删除日志的场景,尤其适合多Tomcat实例或系统级日志管理。
1. 安装logrotate
大多数Linux发行版已内置logrotate,若未安装,可通过以下命令安装:
- Debian/Ubuntu:
sudo apt-get install logrotate - CentOS/RHEL:
sudo yum install logrotate
2. 创建Tomcat专用配置文件
在/etc/logrotate.d/目录下创建tomcat文件(如sudo vi /etc/logrotate.d/tomcat),添加以下内容:
/usr/local/tomcat/logs/catalina.out { # 替换为实际catalina.out路径
daily # 每天轮转一次(可选:weekly/monthly)
rotate 7 # 保留最近7个日志文件
compress # 压缩旧日志(如catalina.out.1.gz)
delaycompress # 延迟压缩(当前日志不压缩,下次轮转时压缩)
missingok # 日志文件不存在时不报错
notifempty # 日志为空时不轮转
copytruncate # 复制原日志到新文件,再清空原日志(无需重启Tomcat)
}
3. 关键参数说明
daily/weekly/monthly:轮转频率(根据需求选择)。rotate:保留的日志文件数量(如7表示保留7天日志)。compress:启用压缩(节省磁盘空间)。copytruncate:核心参数,无需重启Tomcat即可完成日志切割(适用于无法修改Tomcat配置的场景)。
4. 测试与生效
- 测试配置:
sudo logrotate -d /etc/logrotate.d/tomcat(调试模式,显示配置是否正确)。 - 手动执行:
sudo logrotate -f /etc/logrotate.d/tomcat(强制执行,忽略错误)。 - 自动执行:logrotate默认通过系统cron(
/etc/cron.daily/logrotate)每天运行一次,无需额外配置。
三、两种方法的对比与选择
| 维度 | logging.properties | logrotate |
|---|---|---|
| 适用场景 | 需要精细控制日志格式、级别的场景 | 需要自动化管理、压缩、删除日志的场景 |
| 是否需要重启 | 需要重启Tomcat | 无需重启(copytruncate模式) |
| 灵活性 | 高(可定制日志路径、格式、大小) | 高(支持系统级批量管理) |
| 依赖组件 | Tomcat原生功能 | Linux系统工具(logrotate) |
推荐方案:
- 若需精细控制日志内容(如按级别拆分日志),优先使用
logging.properties。 - 若需自动化管理日志文件(如切割、压缩、删除),优先使用
logrotate。 - 生产环境中,可同时使用两种方法(如用
logging.properties控制日志格式,用logrotate管理日志文件大小和数量)。
以上就是关于“怎样设置Tomcat日志的轮转策略”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm