nginx和uwsgi日志分割

本文详细介绍了两种高效分割Nginx及uWSGI日志的方法,一是通过Nginx配置实现日志按日期自动分割,二是借助crontab定时任务配合脚本来手动分割日志。此外,还提供了uWSGI日志分割的配置示例及脚本,帮助读者掌握日志管理的实用技能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、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 ~ "^(?<year>\d{4})-(?<month>\d{2})-(?<day>\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都代表周日

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值