众所周知……恩,可能有人不知道。nginx是不像apache那样有自带的日志分割工具的,而且,网上查到的nginx配置里的时间变量,特么是假的!假的!假的!
反正我试了没成功过,如果你成功了,请务必告诉我,因为,写脚本实在是太麻烦了。
以下,仅针对了解python的朋友,可以把我的代码嵌进你的脚本里面。

脚本代码(windows):

#执行切割
def docat():
    now = int(math.ceil(time.time()))
    file = "D:/WebSafe/cated"
    logfile = "D:/nginx-1.11.3/logs/access.log"
    today = datetime.datetime.now()
    newlogfile = "D:/nginx-1.11.3/logs/access-"+today.strftime("%Y-%m-%d")+".log"
    #暂停nginx
    os.system("taskkill /F /IM nginx.exe")
    #移动文件
    shutil.move(logfile,newlogfile)
    #启动nginx
    os.chdir(r'D:/nginx-1.11.3')
    #写入文件
    os.remove(file)
    f=open(file,'w')
    f.write(str(now))
    f.close()
    os.system("start nginx")
    time.sleep(5)

#判断是否需要切割日志,并切割
def catlog():
    now = int(math.ceil(time.time()))
    file = "D:/WebSafe/cated"
    if(os.path.exists(file)==False):
        f=open(file,'w')
        f.write('0')
        f.close()
        #开始切割
        docat()
    else:
        f=open(file,'rb')
        cattime = f.read()
        f.close()
        today = datetime.datetime.today()
        todayzero = datetime.datetime(today.year, today.month, today.day, 0, 0, 0)
        todayzero_timestamp = int(time.mktime(todayzero.timetuple()))
        if(int(cattime)<todayzero_timestamp):
            docat()

代码因为写的比较赶,所以可能有些累赘,如果你帮我优化了代码,请拷贝我一份,谢谢。
里面的BUG如下:
1、时间模块的运用,不是很合理,具体哪里不合理,我也不知道
2、逻辑比较累赘,比如时间格式的转换,还有判断是否需要分割的逻辑等等
3、分割后,日志文件命名,用了第二天的年月日,我懒得改,自己知道就好
以上。


哦,对了,忘了说,要引入的几个模块

import os
import time
import datetime
import math
import shutil

就酱