在Linux环境下,Java日志的切割其实有现成的好工具——logrotate。这个工具专门用来管理日志文件,能自动压缩、删除老日志,甚至还能发邮件通知。下面直接进入正题,看看怎么用它来搞定Java日志的日常切割。

第一步,确认系统里已经装了logrotate。大多数Linux发行版默认就带了,如果没有,装一下也很简单:
Debian系(比如Ubuntu)用:
sudo apt-get install logrotate
RPM系(比如CentOS、Fedora)用:
sudo yum install logrotate
第二步,在/etc/logrotate.d/目录下新建一个配置文件。名字可以起得形象点,比如java_app:
sudo nano /etc/logrotate.d/java_app
第三步,往文件里写入具体的配置规则。下面是一个典型的模板,路径和参数可以根据实际情况调整:
/path/to/your/java/app/logs/*.log {
daily
rotate 7
compress
missingok
notifempty
create 640 root adm
}
解释一下这些选项的含义:
daily:每天切一次日志。rotate 7:保留最近7天的日志,更早的自动删除。compress:压缩切下来的旧日志,节省磁盘空间。missingok:如果日志文件不存在,不报错直接跳过。notifempty:日志文件为空就不切,避免生成一堆空文件。create 640 root adm:切割后创建一个新的日志文件,权限640,属主root,属组adm。
第四步,保存文件退出编辑器。
第五步,验证配置是否有效。可以用-f参数强制运行一次:
sudo logrotate -f /etc/logrotate.d/java_app
如果配置没问题,日志文件就会被立刻切割。看到新生成的压缩文件(比如app.log.1.gz)就说明成功了。
第六步,让它自动跑起来。logrotate本身是个定时任务,通常每天凌晨由cron触发一次,检查所有配置并执行切割。可以通过/var/lib/logrotate/status文件查看每次运行的状态。
至此,Java日志的自动化切割就配好了。实际项目里可能还需要考虑日志路径、权限、保留天数等细节,不过核心流程就是这样。关键是把/etc/logrotate.d/下的配置文件写对,之后基本不用再操心。
