uwsgi日志按天切割

服务器出现问题后,需要从uwsgi的日志文件分析原因,但是uwsgi没有提供按天的日志切割配置,只提供了一个log-maxsize配置,当文件达到多大的时候自动切分,对于查找历史日志还是很不方便。
这里可以用mv+touch-logreopen参数,移动日志文件后,让uwsgi重新打开日志记录,不过需要配合sh+crontab

1. 指定touch-logreope文件,

#uwsgi.ini文件中指定
[uwsgi]
master = true #以守护进程运行
touch-logreopen = %d./touchforlogrotat #指定监听文件,修改后重新打开日志
daemonize = %d./uwsgi.daemonize.log #日志路径

这里我们指定日志文件就在项目目录下叫uwsgi.daemonize.log,监听项目目录下的touchforlogrotat文件,如果文件发生变化,就重新打开日志,我们可以先将当前的uwsgi.daemonize.log文件移动到别的地发,再touch一下touchforlogrotat,之前的文件便停止写入,重新生成了一个叫uwsgi.daemonize.log文件。

2. 自动脚本

在当前项目下新建一个touchforlogrotate.sh,并新建日志文件备份的日志,这里就放在项目中的logs文件夹

#!/bin/bash

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

sourcelogpath="${DIR}/uwsgi.daemonize.log"
touchfile="${DIR}/touchforlogrotate"


DATE=`date -d "yesterday" +"%Y%m%d"`
destlogpath="${LOGDIR}/uwsgi.daemonize.${DATE}.log"

mv $sourcelogpath $destlogpath
touch $touchfile

3. crontab定时调用

0 0 * * * sh /projectpath/touchforlogrotate.sh

好了,重启uwsgi,每天los文件夹下便会有每天的日志了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 学习 Flask,写完一个 Flask 应用需要部署的时候,就想着折腾自己的服务器。根据搜索的教程照做,对于原理一...
    Cocoa_Coder阅读 17,236评论 4 56
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,808评论 25 709
  • 前一天学习了 at 命令是针对仅运行一次的任务,循环运行的例行性计划任务,linux系统则是由 cron (cro...
    Zcclucky阅读 593评论 0 0
  • 父容器既没有固定的width和height,或者也没有设定flex,则父容器的尺寸为零。其子组件如果使用了flex...
    json_jie阅读 782评论 1 1
  • 这几天春节休假,离开了日常的生活圈,回到了生于斯长于斯的故土,然而目之所及熟悉又陌生。 村村相连的主干道都修通了水...
    张永胜_永往直前阅读 214评论 2 1