使用logrotate分割Nginx日志
首先,logrotate日志分割配置:
复制代码代码示例:
# cat /etc/logrotate.d/nginx
/data/nginx_logs/*.access_log #nginx日志所在目录 { nocompress #不对日志文件进行转储压缩 daily #指定转储周期为每天 copytruncate #用于还在打开中的日志文件,把当前日志备份并截断 create #建立新的日志文件 ifempty #即使是空文件也转储 olddir /data/nginx_logs/days #转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统 rotate 0 #指定日志文件删除之前转储的次数,0 指没有备份,5 指保留5个备份 }
相关阅读:
复制代码代码示例:
#!/bin/bash
# #site: www.jbxue.com #创建转储日志压缩存放目录 mkdir -p /data/nginx_logs/days #手工对nginx日志进行切割转换 /usr/sbin/logrotate -vf /etc/logrotate.d/nginx #当前时间 time=$(date -d "yesterday" +"%Y-%m-%d") #进入转储日志存放目录 cd /data/nginx_logs/days #对目录中的转储日志文件的文件名进行统一转换 for i in $(ls ./ | grep "^\(.*\)\.[[:digit:]]$") do mv ${i} ./$(echo ${i}|sed -n 's/^\(.*\)\.\([[:digit:]]\)$/\1/p')-$(echo $time) done #对转储的日志文件进行压缩存放,并删除原有转储的日志文件,只保存压缩后的日志文件。以节约存储空间 for i in $(ls ./ | grep "^\(.*\)\-\([[:digit:]-]\+\)$") do tar jcvf ${i}.bz2 ./${i} rm -rf ./${i} done #只保留最近7天的压缩转储日志文件 find /data/nginx_logs/days/* -name "*.bz2" -mtime 7 -type f -exec rm -rf {} \;
#-----------
复制代码代码示例:
#给予执行权限,放到crontab中执行
(责任编辑:IT)#logrotate 0 0 * * * /usr/local/sbin/logrotate-nginx.sh > /dev/null 2>&1 |