在Linux系统中,可以通过多种方式设置syslog日志的保留期限。以下是几种常见的方法:
logrotate是Linux系统默认的日志管理工具,大多数发行版已预装。
编辑或创建logrotate配置文件:
sudo nano /etc/logrotate.conf
或针对特定服务的配置文件:
sudo nano /etc/logrotate.d/syslog
典型配置示例:
/var/log/syslog
{
rotate 7
daily
missingok
notifempty
delaycompress
compress
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
}
关键参数说明:
rotate 7
- 保留7个旧日志文件daily
- 每天轮转一次compress
- 压缩旧日志size 100M
- 当日志达到100MB时轮转(替代daily)测试配置:
sudo logrotate -d /etc/logrotate.conf
编辑rsyslog配置文件:
sudo nano /etc/rsyslog.conf
添加或修改以下行:
$MaxMessageSize 64k
$WorkDirectory /var/spool/rsyslog
$ActionQueueSize 100000
$ActionQueueDiscardMark 97500
$ActionQueueHighWaterMark 80000
$ActionQueueType LinkedList
$ActionResumeRetryCount -1
$ActionQueueSaveOnShutdown on
编辑journald配置文件:
sudo nano /etc/systemd/journald.conf
修改以下参数:
SystemMaxUse=1G
RuntimeMaxUse=200M
MaxFileSec=1month
重启服务:
sudo systemctl restart systemd-journald
在logrotate配置中可以使用size
参数替代时间周期:
/var/log/syslog
{
rotate 4
size 100M
missingok
compress
delaycompress
sharedscripts
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
}
如需立即清理,可以运行:
# 删除超过30天的日志
sudo find /var/log -type f -name "*.log" -mtime +30 -delete
# 清空当前日志文件(不删除文件本身)
sudo truncate -s 0 /var/log/syslog
修改配置后需要重启相关服务:
sudo systemctl restart rsyslog
确保有足够的磁盘空间监控机制,避免日志填满磁盘
根据合规要求,某些日志可能需要保留更长时间,请根据实际需求调整
在生产环境中更改前,建议先在测试环境验证配置效果