nginx日志切割,logrotate和nginx日志切割
logrotate进行nginx日志切割
logrotate 是一个基于cron的日志文件管理工具。用来把旧的日志文件删除,并创建新的日志文件,可以根据日志文件的大小,也可以根据其天数来转储,这种行为称为日志转储或滚动。
默认centos7会自动安装logrotate
rpm -qa logrotate 确认有安装logrotate
ls /etc/logrotate.conf
yum install -y logrotate 没有安装输入这个命令直接安装
logrotate文件配置解释
在/etc/logrotate.d 编辑文件,下面是部分语法内容
daily : 指定每天自动切割
weekly: 指定每周自动切割
monthly: 指定每月自动切割
rotate [值]: 保留日志文件个数
notifempty: 空文件不切割
nocompress: 不压缩日志文件
delaycompress: 延迟压缩(当次切割不压缩,下次切割再压缩上一个文件)
create 0640 nginx root 指定新文件权限,属主属组
prerotate [命令] endscript 指定切割前进行命令操作
postrotate [命令] endscript 指定切割后进行命令操作
missingok 如果日志不存在,不提示错误
nomissingok 如果日志不存在,提示错误,默认值
安装nginx
初始化
cd /etc/yum.repos.d/
yum install -y wget
wget http://mirrors.aliyun.com/repo/Centos-7.repo
wget http://mirrors.aliyun.com/repo/epel-7.repo
mv CentOS-Base.repo CentOS-Base.repo.bak
yum clean all
yum makecache
systemctl stop firewalld
systemctl disable firewalld
sed -i 's/SELINUX=enforcing$/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
yum install -y nginx
systemctl start nginx
systemctl enable nginx
ls /var/log/nginx/access.log 确认日志生成
ls /run/nginx.pid 确认pid位置
配置logrotate
如果使用yum安装nginx会自动在这个目录生成这个文件
vi /etc/logrotate.d/nginx 编辑文件为下面内容
/var/log/nginx/*.log {
daily
rotate 10
missingok
notifempty
nocompress
delaycompress
create 0640 nginx nginx
postrotate
if [ -f /run/nginx.pid ]; then
kill -USR1 `cat /run/nginx.pid`
fi
endscript
}
注意:yum安装nginx时,日志文件都是root权限,修改为nginx权限
chown nginx.nginx -R /var/log/nginx/
手动制作一些nginx日志
cd /var/log/nginx/
tail /var/log/messages >>/var/log/nginx/access.log
tail /var/log/messages >>/var/log/nginx/error.log
logrotate -f /etc/logrotate.d/nginx 手动进行nginx切割
logrotate -vf /etc/logrotate.d/nginx 加-v可以查看详细执行过程
ll 查看生成的日志
主配置文件切割加时间
上面因为配置文件没有加"dateext"这个参数,所以没显示时间
vi /etc/logrotate.conf 确认主配置文件这个参数没被注释
dateext
删除上面生成的日志
rm -rf access.log.1
rm -rf error.log.1
tail /var/log/messages >>/var/log/nginx/access.log
tail /var/log/messages >>/var/log/nginx/error.log
执行主配置文件(这个会把定义在/etc/logrotate.d/下的全部日志切割)
logrotate -f /etc/logrotate.conf
ll 再次查看/var/log/nginx就可以看到日志有时间信息了