nginx日志分割
服务器长时间运行nginx日志文件会越来越大,导致查找和定位日志非常困难,此处将通过一系列方法对这个日志文件进行按天分割,方便排查日志定位问题
on
2026/09/14
nignx默认日志规则
在nignx中日志默认保存在logs目录下,分别存在access.log和error.log,在没有特别设置的前提下,这两个文件是不断追加写入的,这会导致log文件特别大,如果要排查日志由于文件过大操作起来就很不方便,所以这里需要进行日志分割操作过程
首先确认logrotate是否安装,可以使用logrotate命令看看效果,如果没有安装运行下面命令安装logrotateyum install logrotate
安装完成后,编辑文件,如果 logrotate.d 目录不存在,则使用 mkdir 命令手动创建一下
vim /etc/logrotate.d/nginx
编辑内容如下
# *.log日志路径和nginx.pid文件路径根据自己的实际情况配置
/usr/local/nginx/logs/*.log {
daily # 按天轮转
missingok # 日志不存在时不报错
rotate 30
# 保留30天
dateext # 启用日期后缀
compress # 压缩旧日志
delaycompress # 延迟压缩(保留最近一个未压缩)
notifempty # 空文件不轮转
# create:指示 logrotate 在轮转(重命名/压缩)旧日志后,创建一个新的空日志文件。
# 0640 表示:
# 所有者(nginx 用户):读、写(6 = rw-)
# 所属组(adm 组):读(4 = r--)
# 其他人:无任何权限(0 = ---)
# 即最终权限为 -rw-r-----
# nginx:新文件的所有者(用户)。通常 Nginx 进程以 nginx 用户运行,这样进程才能写入该日志文件。
# adm:新文件的所属组。adm 组在 Linux 中常用于系统日志管理,允许属于该组的用户(如管理员)读取日志。
#create 0640 nginx adm
create 0640 root adm
sharedscripts
postrotate
# 重新打开日志文件,注意信号是 USR1 或 reopen
[ -f /usr/local/nginx/logs/nginx.pid ] && kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
endscript
}
进行测试
sudo logrotate -d /etc/logrotate.d/nginx
运行
sudo logrotate -vf /etc/logrotate.d/nginx
