1. 调整日志级别,减少不必要的日志记录
通过降低日志详细程度,从根源减少日志文件大小。编辑rsyslog配置文件(/etc/rsyslog.conf或/etc/rsyslog.d/50-default.conf),修改日志级别:例如将*.info;mail.none;authpriv.none;cron.none改为*.warning;mail.none;authpriv.none;cron.none,仅记录警告及以上级别的日志。修改后重启rsyslog服务使配置生效:sudo systemctl restart rsyslog。
2. 使用logrotate工具自动化日志轮转
logrotate是Ubuntu默认的日志管理工具,可自动轮转、压缩和删除旧日志。编辑/etc/logrotate.d/rsyslog(系统日志)或特定应用(如Apache、MySQL)的配置文件,添加以下关键参数:
/var/log/syslog { size 100M # 当文件达到100MB时轮转 rotate 5 # 保留5个轮转文件 compress # 压缩旧日志(节省空间) delaycompress # 延迟压缩(避免立即压缩占用资源) missingok # 日志文件丢失时不报错 notifempty # 日志为空时不轮转 create 640 root adm # 新日志文件的权限、所有者及组 }
测试配置是否正确:sudo logrotate -f /etc/logrotate.conf(强制轮转)。
3. 用journalctl管理systemd日志
systemd的日志由journalctl管理,可通过以下命令清理旧日志:
sudo journalctl --disk-usage;sudo journalctl --vacuum-time=7d;sudo journalctl --vacuum-size=500M。4. 手动清理旧日志文件
若需快速释放空间,可手动清空或删除旧日志:
sudo truncate -s 0 /var/log/syslog、sudo truncate -s 0 /var/log/auth.log;.gz文件):sudo rm /var/log/*.gz;sudo find /var/log -type f -name "*.log" -exec truncate -s 0 {} \;。5. 禁用不必要的服务日志
部分服务会产生大量无用日志,可通过修改服务配置文件降低其日志级别或禁用日志:
/etc/avahi/avahi-daemon.conf),将log-level=info改为log-level=warning;sudo systemctl restart avahi-daemon。6. 考虑使用更高效的日志工具(可选)
若默认rsyslog无法满足需求,可替换为syslog-ng:
sudo apt-get install syslog-ng;/etc/syslog-ng/syslog-ng.conf),根据需求调整日志过滤、存储路径和格式;sudo systemctl restart syslog-ng。7. 监控日志文件状态
定期监控日志文件大小和轮转情况,及时发现问题:
du -sh /var/log查看/var/log目录总大小;ls -lh /var/log/*.log查看具体日志文件的大小和修改时间;cat /var/lib/logrotate/status(记录每次轮转的详细信息)。