本章节介绍系统日志的轮转。
日志轮转概念: 日志轮转是一种日志管理机制,用于管理日志文件的大小和数量,避免日志文件过大占用过多磁盘空间。日志轮转会定期将当前日志文件重命名或移动,然后创建一个新的日志文件,旧的日志文件会被压缩或删除。
系统日志轮转原理: 系统日志通常由系统日志服务(如 rsyslog、syslog-ng)管理,自动轮转。系统日志服务会根据配置文件自动轮转日志文件,无需手动干预。
日志轮转优势:
编辑 /etc/rsyslog.conf:
# Nginx 日志配置
$RotateFile 7
$FileCreateMode 0640
$FileOwner nginx
$FileGroup adm
rsyslog 配置说明:
$RotateFile 7:保留 7 个日志文件$FileCreateMode 0640:新日志文件的权限$FileOwner nginx:日志文件的所有者$FileGroup adm:日志文件的组rsyslog 配置原理: rsyslog 是一个系统日志服务,用于接收、存储和分析日志消息。rsyslog 支持日志轮转,可以根据配置文件自动轮转日志文件。
# 查看日志文件
ls -la /var/log/syslog*
# 查看轮转配置
cat /etc/logrotate.conf
查看日志轮转说明:
ls -la /var/log/syslog*:查看日志文件cat /etc/logrotate.conf:查看轮转配置# 测试 logrotate
sudo logrotate -f /etc/logrotate.conf
手动轮转说明:
logrotate -f:强制轮转日志文件手动轮转原理: 手动轮转会强制轮转日志文件,即使日志文件没有达到轮转条件。
/var/log/syslog {
size 100M
rotate 7
compress
delaycompress
notifempty
create 0640 syslog adm
sharedscripts
postrotate
systemctl reload rsyslog >/dev/null 2>&1 || true
endscript
}
按大小轮转说明:
size 100M:当日志文件大小达到 100M 时轮转/var/log/syslog {
daily
rotate 7
compress
delaycompress
notifempty
create 0640 syslog adm
sharedscripts
postrotate
systemctl reload rsyslog >/dev/null 2>&1 || true
endscript
}
按时间轮转说明:
daily:每天轮转一次weekly:每周轮转一次monthly:每月轮转一次