博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
uwsgi log rotate按天切割日志
阅读量:6968 次
发布时间:2019-06-27

本文共 1245 字,大约阅读时间需要 4 分钟。

  hot3.png

uwsgi和nginx的log一样都是在一个文件名上写log,无法按天进行rotate,所以单个文件的体积会越来越大,不利于log的备份。

nginx的log切分方法

在网络上研究了nginx的log切分方法,原理比较简单。

  1. 先重命名文件,mv access.log access-20150215.log
  2. 然后reload一下nginx。
  3. nginx继续在access.log上写log

我想这种方法也是应该可以应用到uwsgi上面的。但是没有那么容易。

尝试应用到uwsgi

  1. 先重命名文件,mv uwsgi.log uwsgi-20150215.log
  2. 然后reload一下uwsgi。
  3. 没有看到uwsgi.log文件

与想象中的完全不一样。发现uWSGI的reload操作根本重不会新打开log文件。这样就需要变更一下思路了。

解决方案一

参数 touch-logreopen可以重新打开日志。

logto = /data/log/MODULE/uwsgi.logtouch-logreopen=/data/log/MODULE/.touchforlogrotate

touch-logreopen当指定的文件被touch过后,时间戳发生变化,会让uWSGI重新打开日志文件,并且不会终止当前的服务(不是stop+start,而是reload的概念)。

#!/bin/bashmodule="module_name"DIR=`echo $(cd "$(dirname "$0")"; pwd)`       #获取当前目录 LOGDIR="/data/log/$module/"                   #log目录sourcelogpath="${LOGDIR}uwsgi.log"            #log源地址touchfile="${LOGDIR}.touchforlogrotate"       #需要touch的文件DATE=`date -d "yesterday" +"%Y%m%d"`destlogpath="${LOGDIR}uwsgi-${DATE}.log"     #重命名后的文件mv $sourcelogpath $destlogpath#echo $touchfiletouch $touchfile                             # 更新文件时间戳

然后在 crontab中加入这个,让每天0点0分的时候切分日志,当然了也可以23点59分,不过要更改一下shell脚本。

* * * /data/you_module_name/bin/uwsgirotate.sh  > /dev/null 2>&1

当然了,也可以不用crontab,如果你有 logrorate服务,可以往里面添加一些事件,来进行日志的滚动。

转载于:https://my.oschina.net/bobwei/blog/1931571

你可能感兴趣的文章
在 PHP 中实现整数溢出
查看>>
数据类型和Json格式
查看>>
CodeIgniter连接数据库
查看>>
vi vim配置
查看>>
PP日志-Day 3
查看>>
eclipse 调试 jdk 看不到变量的值
查看>>
如何解决分配到Autoconfiguration IPV4 地址
查看>>
.NET 远程操作MSMSQ无权限或操作出错问题解决
查看>>
浅谈企业信息泄密:信任不存,效益焉在?
查看>>
Mysql密码管理及授权
查看>>
JAVA线程安全之synchronized关键字的正确用法
查看>>
springmvc+mybatis+dubbo分布式平台-maven构建根项目
查看>>
一个小常识
查看>>
Nginx防盗链 Nginx访问控制 Nginx解析php相关配置 Nginx代理
查看>>
解决虚拟机中使用ntpdate报错:ntpdate[46700]: no server suitab
查看>>
Docker 快速删除所有容器
查看>>
【OCP认证12c题库】CUUG 071题库考试原题及答案(27)
查看>>
OSS支持IPV6/IPV4双栈访问域名
查看>>
阿里云应用实时监控 ARMS 再升级,支持 Prometheus 开源生态
查看>>
最全面的IGMP协议总结!
查看>>