𝓣𝓮𝓷 𝓸'𝓬𝓵𝓸𝓬𝓴


愿世界安康,愿你我皆好!

进入博客 >

𝓣𝓮𝓷 𝓸'𝓬𝓵𝓸𝓬𝓴

𝓣𝓮𝓷 𝓸'𝓬𝓵𝓸𝓬𝓴

愿世界安康,愿你我皆好!
  • 文章 32篇
  • 评论 209条
  • 分类 14个
  • 标签 43个
2021-05-21

Nginx日志文件配置及切割!!

{message type="success" content="nginx日志分割,大概分为两个脚本"/}

{message type="warning" content="1.自己编写脚本进行日志分割。
编写一个脚本名称为:cut_nginx_log.sh"/}

#!/bin/bash
year=`date +%Y`
month=`date +%m`
day=`date +%d`
logs_backup_path="/data/wwwlogs/$year$month"               #切割后日志要存放的路径
logs_path="/data/wwwlogs/"                                 #原日志存放的路径
pid_path="/run/nginx.pid"                                  #nginx的pid,用来刷新日志,分割之后重新生成一个新的日志
logs_error="error_nginx"                                   #错误日志的名称
if [ -n "$1" ] ;then                   #如果系统多个域名存在不同的日志,可以将日志名称传递到脚本后面
        logs_access="$1_nginx"         #正常的访问日志,有些根据域名生成的日志
else
        logs_access="access_nginx"     #正常的访问日志
fi

[ -d $logs_backup_path ]||mkdir -p $logs_backup_path
rq=`date +%Y%m%d`
mv ${logs_path}${logs_access}.log ${logs_backup_path}/${logs_access}_${rq}.log
mv ${logs_path}${logs_error}.log ${logs_backup_path}/${logs_error}_${rq}.log
kill -USR1 $(cat /run/nginx.pid)

{message type="warning" content="第二种脚本
编写一个脚本名称为:cut_nginx_log2.sh"/}

#! /bin/bash
## 假设nginx的日志存放路径为/data/wwwlogs/
d=`date -d "-1 day" +%Y%m%d`   #生成昨天的日期
logdir="/data/wwwlogs/"   #定义存放位置
nginx_pid="/run/nginx.pid" #定义位置,找他的pid
cd $logdir #进入目录下
for log in `ls *.log`  #做个for循环,查询日志目录下面所有以.log结尾的文件
do
   mv $log $log-$d   #将目录下面所有以.log结尾的文件都做一个改名操作
done
/bin/kill -HUP `cat $nginx_pid`  #重新加载一下,生成新的日志文件

{message type="error" content="上面两个脚本任意选择一个,然后写一个定时任务"/}

#crontab -e
59 23 * * * bash /usr/local/nginx/cut_nginx_log.sh   #每天23:59分开始执行;

{message type="error" content="第二种方式是利用logrotate日志管理去切割nginx日志
一般系统会自带logrotate的, 关于logrotate的配置可以去看我的另外一篇博客
"/}

# rpm -ql  logrotate
/etc/cron.daily/logrotate
/etc/logrotate.conf  # 主配置文件
/etc/logrotate.d   # 配置目录
/etc/rwtab.d/logrotate
/usr/sbin/logrotate
/usr/share/doc/logrotate-3.8.6
/usr/share/doc/logrotate-3.8.6/CHANGES
/usr/share/doc/logrotate-3.8.6/COPYING
/usr/share/man/man5/logrotate.conf.5.gz
/usr/share/man/man8/logrotate.8.gz
/var/lib/logrotate
/var/lib/logrotate/logrotate.status

{message type="info" content="利用logrotae切割日志"/}

# vim /etc/logrotate.d/nginx 
/data/wwwlogs/*.log     #此处为nginx存储日志的地方;
 {
    daily                    #指定转储周期为每天
    rotate 30                #转储次数,超过将会删除最老的那一个
    missingok                #如果日志文件丢失,不要显示错误
    compress                 #通过gzip 压缩转储以后的日志
    delaycompress            #当前转储的日志文件到下一次转储时才压缩
    notifempty               #当日志文件为空时,不进行轮转
    postrotate               #执行的指令
    if [ -f /run/nginx.pid ]; then
          kill -USR1 `cat /run/nginx.pid`
    fi
endscript                   #PID路径根据实际路径填写;
}

{message type="success" content="保存,然后测试一下看看效果"/}

# logrotate -vf /etc/logrotate.d/nginx 
access.log  access.log.1  error.log  error.log.1

{message type="warning" content="测试没有问题了,可以设置一个定时任务"/}

0 0 * * * /usr/sbin/logrotate -vf /etc/logrotate.d/nginx #每天凌晨00:00自动执行日志切割任务;

#标签: none

- THE END -

非特殊说明,本博所有文章均为博主原创。


暂无评论 >_<

-->