uWSGI日志每日分割

日志是一个系统必不可少的组成部分,它可以记录系统运行的状况,当系统出现bug能让我们快速找到并解决。不过对应uWSG只提供了log-maxsize配置来按文件大小分割,这似乎不太合理,在这里介绍一下使用cron+shell工具来帮我们按天定时分割日志。
在本人的工作场使用docker来部署整个项目,并将日志的目录通过data volume的持久化保存,也不需要进docker容器才能查看日志,但是碰到了一个问题是,网上很多博客日志分割通过touch uWsgi中touch-logreopen配置的文件来触发生成新的日志。但在本人的项目中并没起效果,一直没有新的日志文件产生,开始怀疑是不是touch-logreopen参数不起效果,然后本人做了很多测试终于发现了一点,touch-logreopen触发事件与daemonize配置指定的日志路径没有关系,而是跟pidfile配置的文件有关,它触发事件会在pidfile配置的同级路径下生成一个同名的log文件

下面是本人的ini文件:

# uwsgi.ini file
[uwsgi]

# Django-related settings
# the base directory (full path)

uid = www-data
gid = www-data


# logs
daemonize = ./logs/uwsgi_in_docker.log
# 该文件变动时重新指定新的输出流到新的日志文件
touch-logreopen =  ./logs/.touchforlogrotate   
# Django s wsgi file
module = Backend.wsgi

# the sock file path
socket = :8000

# the number of worker
workers = 5
# 值得注意的式网上很多uwsgi分割日志教程中都没提到一点是,touch-logreopen监控文件时间发生时,
# 不会生成daemonize指定的文件,而生成pidfile同名前缀且同目录的的log文件
pidfile = ./logs/.uwsgi_in_docker.pid

# process-related settings
# master
master = true

# serializer requests
thunder-lock = true

# enable threads support
enable-threads = true

# ... with appropriate permissions - may be needed
# chmod-socket    = 664
# clear environment on exit
vacuum          = true

# Concurrenc socket connection num, default=100
listen = 128

下面是shell文件:

#!/bin/bash
DIR=`echo $(cd "$(dirname "$0")"; pwd)`
LOGDIR="${DIR}/logs"

sourcelogpath="${LOGDIR}/uwsgi_in_docker.log"
touchfile="${DIR}/.touchforlogrotate"

DATE=`date -d "yesterday" +"%Y-%m-%d"`

destlogpath="${LOGDIR}/uwsgi_in_docker.log.${DATE}"

# 保留的日志备份数
BACKUP=30
# 删除30天以前的日志,+${BACKUP}代表多少天前
find ${LOGDIR} -mtime +${BACKUP} -name "uwsgi*.log*" -exec rm -rf {} \; 
# 将日志前一天的日志分割
mv $sourcelogpath $destlogpath
# 触发uWSGI中的监听事件,uWSGI生成新的日志
touch $touchfile

crontab定时调用

0 0 * * * sh /路径/touchforlogrotate.sh
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值