1、我们先打开nginx的配置文件查看nginx的日志路径
vim /usr/local/nginx/conf/nginx.conf
下图可以看到我的日志文件的路径为/usr/local/nginx/logs/
我们可以ls查看确定一下路径
我们的目的就是对 access.log 和 error.log 这两个日志文件进行切割
2、安装 logrotate(如果已经安装可以跳过这一步)
sudo apt-get install logrotate
2.1 如果安装logrotate 出现下面这种错误
2.2 解决办法
sudo apt --fix-broken install
2.3然后重新执行安装命令即可
3、创建 logrotate 配置文件
我们先进入到logrotate 目录下因为我们切割nginx的日志所以创建的文件名字我创建为nginx
logrotate的目录通常在/etc/logrotate.d/
cd /etc/logrotate.d/
touch nginx
4、在文件内添加以下内容
注:需要注意日志文件的路径 和pid文件的路径
vim nginx
/usr/local/nginx/logs/*.log {
daily
missingok
rotate 3
compress
delaycompress
notifempty
create 0640 root adm
sharedscripts
postrotate
[ ! -f /usr/local/nginx/logs/nginx.pid ] || kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
endscript
}
用于对
/usr/local/nginx/logs/*.log
目录下的日志文件进行日志轮转。下面是各个参数的详细解释:
daily
: 表示每天轮转一次日志文件。missingok
: 如果日志文件不存在,不报错继续执行。rotate 3
: 保留历史日志文件的数量,这里设置为保留最近的 3 个历史日志文件。compress
: 将轮转后的日志文件进行压缩。delaycompress
: 在下一次轮转时压缩上一次轮转的日志文件。notifempty
: 如果日志文件为空,不进行轮转。create 0640 root adm
: 在轮转后创建新的日志文件,并设置权限为 0640,属主为 root,属组为 adm。sharedscripts
: 多个日志文件共享一个脚本,在轮转前只运行一次脚本。postrotate
: 在轮转后执行的命令块,这里的命令是判断 nginx 进程是否在运行,如果在运行则向 nginx 主进程发送 USR1 信号,实现日志切割。
5、测试和应用配置:
可以通过运行以下命令测试 logrotate 配置文件:
logrotate -d /etc/logrotate.d/nginx
如果没有错误,就可以使用 logrotate 实际进行日志轮转了:
logrotate -f /etc/logrotate.d/nginx
完成