美文网首页
定时对uWSGI的日志进行切割备份

定时对uWSGI的日志进行切割备份

作者: mengkaidi | 来源:发表于2019-05-20 15:06 被阅读0次
    1. 需要在uwsgi的配置文件中,添加 touch-logreopen, flask项目根目录下 uwsgi 的配置文件 uwsgi.ini 的内容如下:
    [uwsgi]
    # 启动主线程
    master = true
    #项目运行的虚拟环境目录
    home = venv
    #指定加载的WSGI文件
    wsgi-file = wsgi.py
    #指定uWSGI加载的模块中哪个变量将被调用
    callable = app
    #指定socket地址, 5000端口号
    socket = :5000
    #设置工作进程的数量
    processes = 4
    #设置每个工作进程的线程数
    threads = 2
    #监听请求队列的个数
    listen = 1024
    #主进程pid写到指定的文件
    pidfile = uwsgi.pid
    #不记录请求信息的日志,只记录错误以及uWSGI内部消息到日志中
    #disable-logging = true
    #进程在后台运行,并将日志打印到指定文件
    daemonize = ./logs/uwsgi.log
    #设置一个监听对象
    touch-logreopen = ./logs/.touchforlogrotat
    

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

    1. 通过crontab设置定时任务,命令行下输入:
    crontab -e
    

    会进入一个当前用户的文件,在这个文件中添加下面这行操作:

    '''
    * * * * * 执行任务
    第一个* 一小时当中的第几分钟:0-59
    第二个* 一天当中的第几个小时:0-23
    第三个* 一月当中的第几天:1-31
    第四个* 一年当中的第几个月:1-12
    第五个* 一周当中的第几个星期:0-7 0,7都代表周日
    '''
    0 0 * * * sh  /path/to/logbackups.sh  #代表每天0点执行脚本 logbackups.sh
    

    其中,脚本的内容 logbackups.sh 如下:

    #!/bin/bash
    
    #日志所在目录
    LOGDIR="/path/to/logs/"
    
    DATE=`date -d "yesterday" +"%Y-%m-%d"`
    
    NEWDIR="/path/to/logs/${DATE}"
    
    mkdir -p  ${NEWDIR}
    
    #将旧日志重新以日期命名
    mv ${LOGDIR}/uwsgi.log   ${NEWDIR}/uwsgi-${DATE}.log
    
    touch /path/to/.touchforlogrotat
    

    相关文章

      网友评论

          本文标题:定时对uWSGI的日志进行切割备份

          本文链接:https://www.haomeiwen.com/subject/dwjkzqtx.html