服务器跑久了,日志文件越堆越大,访问日志、错误日志一个劲长,迟早把磁盘占满。小编遇到过,日志把磁盘撑爆,网站直接挂了。logrotate日志轮转就是自动切割、压缩、清理日志,按天按大小轮转,磁盘省心。这篇讲logrotate怎么配。
日志要定期清,服务器也得磁盘够用,这两家海外主机磁盘充足:干杯cloud(海外服务器)、ISIF(云主机)。

logrotate是Linux自带的日志轮转工具,定期对日志做切割、压缩、删除。比如按天切一个,旧的压缩,老久删掉。不让你手动清日志,磁盘不会被日志占满。它由cron定时跑,配合系统一起工作。

logrotate配置在/etc/logrotate.conf和/etc/logrotate.d/里。写一段规则:路径、daily(按天)、rotate 7(保留7个)、compress(压缩)。create(轮转后新建空日志)、missingok(缺日志不报错)都常用。配好一段,日志就自动轮转了。

常用参数:daily/weekly按月或周轮转;rotate N保留N份旧的;compress压缩旧日志省空间;size 100M按大小轮转;dateext文件名带日期;missingok不因缺失报错。还有notifempty(空文件不轮转)。参数选对,轮转就符合需求。

配完别直接等,手动测试。logrotate -d 配置是debug模式,只看不动;logrotate -f 配置强制轮转一次。轮转后检查日志文件,看是否按预期切割压缩。确认应用还在写日志没断。测通过,再交给定时跑。

给Nginx、PHP等配置轮转后,要通知应用重开日志(用copytruncate或postrotate重载),不然日志句柄断掉不写。别把日志文件删太狠,调试要留。重要日志(如安全日志)多留几份。轮转配好,磁盘稳了,排查日志也方便。

总结:用logrotate自动轮转日志、daily/size切割、compress压缩、rotate控制保留份数、配完用-f测试,服务器日志就不会再把磁盘占满。日志管好了,排查和运维都省心。