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.conf,服务特定配置(如syslog、apache2)存放在/etc/logrotate.d/目录下。
/etc/logrotate.d/rsyslog,添加或修改以下参数:/var/log/syslog { weekly # 每周轮转一次(可根据需求改为daily/monthly) rotate 4 # 保留4个旧日志文件 compress # 压缩旧日志(节省空间) delaycompress # 延迟压缩(避免压缩当前正在写入的日志) missingok # 日志文件丢失时不报错 notifempty # 日志为空时不轮转 create 640 root adm # 创建新日志文件,权限640,属主root,属组adm }sudo logrotate -f /etc/logrotate.conf强制轮转,验证配置是否正确。3. 使用journalctl管理systemd日志
journalctl是systemd的日志管理工具,可高效处理systemd服务的日志。
sudo journalctl --disk-usage(例如显示“Archived and active journals take up 1.2G in the file system”)。sudo journalctl --vacuum-time=7d。sudo journalctl --vacuum-size=500M。4. 清理旧日志文件
对于未通过logrotate或journalctl管理的日志,可手动清理:
truncate命令将日志文件大小置零(不删除文件,避免影响正在运行的服务),例如:sudo truncate -s 0 /var/log/syslog /var/log/auth.log。find命令查找并清空所有.log文件:sudo find /var/log -type f -name "*.log" -exec truncate -s 0 {} \;。5. 禁用不必要的服务日志
某些服务(如Avahi、CUPS)可能产生大量无用日志,可通过调整其日志级别减少记录。
/etc/avahi/avahi-daemon.conf,找到#log-level=info,修改为log-level=warning,然后重启服务:sudo systemctl restart avahi-daemon。6. 考虑使用更高效的日志工具(可选)
若rsyslog无法满足需求,可使用syslog-ng替代。syslog-ng提供更灵活的过滤、路由和存储功能,适合大规模或复杂日志环境。
sudo apt-get install syslog-ng。/etc/syslog-ng/syslog-ng.conf,根据需求调整配置(如过滤info日志),完成后重启服务:sudo systemctl restart syslog-ng。