1.日志轮转
日志轮转是一种 自动化管理日志文件 的机制,通过定期 重命名、压缩、删除旧日志 文件,避免单个日志文件过大导致磁盘空间耗尽,同时保留历史日志以便排查问题。
2.核心工具:logrotate
Linux 默认使用 logrotate 工具实现日志轮转,其特点如下:
配置文件:主配置位于 /etc/logrotate.conf,子配置存放于 /etc/logrotate.d/(针对不同服务)。
定时任务:通过 cron 每日自动执行(通常位于 /etc/cron.daily/logrotate)。
手动触发:logrotate -f /etc/logrotate.conf 强制立即轮转。
3.简单使用
1.进入 /etc/logrotate.conf 目录,进行新增nginx_error,文件内容为以下内容去掉注释:
/home/nginx/logs/error.log {
daily # 每天轮转一次
missingok # 日志不存在时不报错
rotate 30 # 保留30个历史备份
compress # 压缩旧日志(默认gzip)
delaycompress # 延迟到下次轮转时压缩最新旧日志
notifempty # 空日志不轮转
create 0640 # 创建新日志文件
sharedscripts # 所有日志轮转后执行一次脚本
dateext # 使用日期后缀(默认格式 -%Y%m%d)
dateformat -%Y-%m-%d # 自定义日期格式(覆盖dateext默认格式)
postrotate
docker exec nginx-with-proxy nginx -s reopen # 通知容器内的Nginx重新打开日志
find /home/nginx/logs -name "error.log-*" -exec chmod 640 {} \; # 手动修复旧日志权限
endscript
}
2.模拟使用并进行轮转一次
轮转后前一次日志被压缩,按照日期格式生成新的日志