nginx和uwsgi日志分割

一、nginx日志分割

方法一:

只需要在server配置中,配置一个脚本即可,目前这个是定义了日,可以定义到秒。
set多添加几个参数即可

        server {
                listen 80 default_server;

                root "/app/www/public";

                if ($time_iso8601 ~ "(\d{4})-(\d{2})-(\d{2})") {

                     set $time $1-$2-$3;

                }

               # 精确到秒

               # if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})")
               # {

                     set $time $1-$2-$3-$4-$5-$6;
               # }

                access_log /app/logs/access-${time}.log  main;
                error_log /app/logs/error.log;
        }


直接在nginx配置文件中,配置日志循环,但是会降低性能

​ 
也可以使用Perl语法来捕获,如下:
if ($time_iso8601 ~ "^(?\d{4})-(?\d{2})-(?\d{2})") {} 
access_log /data/logs/nginx/www.ttlsa.com-$year-$month-$day-access.log;

 

方法二:

利用crontab定时任务切割日志

1、vi /home/nginx/sbin/logcut.sh

日志切割脚本如下:

#!/bin/bash

LOGDIR="/home/master/logs/nginx/"

MONTH=$(date "+%Y-%m")

DAY=$(date "+%Y-%m-%d")

mkdir -p ${LOGDIR}/${MONTH}/

mv ${LOGDIR}/agvservice_7014_access.log ${LOGDIR}/${MONTH}/access-${DAY}.log

# 给nginx一个信号 重新打开日志文件

kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`

 

2、加入crontab任务

1 输入命令:crontab -e

2 加上命令:0 0 * * * sh /home/nginx/sbin/logcut.sh

# 第一个* 一小时当中的第几分钟:0-59

# 第二个* 一天当中的第几个小时:0-23

# 第三个* 一月当中的第几天:1-31

# 第四个* 一年当中的第几个月:1-12

# 第五个* 一周当中的第几个星期:0-7 0,7都代表周日

二、uwsgi分割

1、需要在uwsgi的配置文件中,添加 touch-logreopen,内容如下:

#设置一个日志监听对象

touch-logreopen = /logs/.touchforlogrotat

当监听对象 touch-logreopen 所指向的文件被touch,时间戳改变后,uwsgi会重新打开uwsgi.log文件进行写入,且不会中断当前程序的执行。如果没有touch-logreopen这个监听对象,是无法对uwsgi.log进行转储的。

 

2、脚本的内容 logbackups.sh 如下:

 

#!/bin/bash

# 日志所在目录

LOGDIR="/home/master/logs/nginx/smhprj/agvprj/"

DATE=$(date "+%Y-%m-%d")

#将旧日志重新以日期命名

mv ${LOGDIR}/uwsgi-today.log ${LOGDIR}/uwsgi-${DATE}.log

touch ${LOGDIR}/.touchforlogrotat

 

3、加入crontab任务

1 输入命令:crontab -e

2 加上命令:0 0 * * * sh /home/xxxx/logcut.sh

# 第一个* 一小时当中的第几分钟:0-59

# 第二个* 一天当中的第几个小时:0-23

# 第三个* 一月当中的第几天:1-31

# 第四个* 一年当中的第几个月:1-12

# 第五个* 一周当中的第几个星期:0-7 0,7都代表周日

 

 

 

 

 

 

你可能感兴趣的:(部署)