• python 打包前三天日志


    日志格式

    app-2019-07-24.log

    app-2019-07-24.1.log

     该脚本适合一天之内有多个日志文件

    # /usr/bin/python
    #-*- coding: utf-8 -*-
    # Description 日志压缩
    
    import os
    import datetime
    import re
    import tarfile
    
    #获取前几天的日期
    def getdate(before_day):
        today = datetime.datetime.now()
        # 计算偏移量
        offset = datetime.timedelta(days=-before_day)
        # 获取想要的日期的时间
        re_date = (today + offset).strftime('%Y-%m-%d')
        return re_date
    
    # 获取文件路径集合,不包含子目录
    def getFile(logsPath):
        logs_file = []
        file_list = os.listdir(logsPath)
        for file_name in file_list:
            path = os.path.join(logsPath, file_name)
            if os.path.isdir(path):
                continue
            logs_file.append(path)
    
        return logs_file
    
    # 检查文件,并压缩
    def tar_file(logs_file,i):
        new_date = datetime.datetime.now().strftime('%Y-%m-%d')  # 当前时间
        logs_old=[]
        for f in logs_file:
            # 过滤掉压缩文件
            if f.endswith(".tar.gz"):
                continue
            # 使用正则获取日志文件名的时间
            mat = re.search(r"(d{4}-d{1,2}-d{1,2})", f)
            if bool(mat):
                delta = datetime.datetime.strptime(new_date, '%Y-%m-%d') - datetime.datetime.strptime(mat.group() ,'%Y-%m-%d')
                if delta.days == i:
                  f=re.split("/", f)[-1]
                    logs_old.append(f)
    
        old_date = getdate(i)
        if len(logs_old) == 0:
            return
        filename = re.split("-", logs_old[0])[0]
        filename = re.split("/", filename)[-1] 
        tar_file_name = filename + "-" + old_date + ".tar.gz"
        #print(tar_file_name)        
        if os.path.exists(tar_file_name):
            print(tar_file_name,"is exists")
            return
        tar = tarfile.open(tar_file_name, "w:gz")
        for i in logs_old:
            tar.add(i)
            os.remove(i)
        tar.close
    
    if __name__ == "__main__":
        logsPath = "/opt/"
        os.chdir(logsPath)     
        logs_file = getFile(logsPath)
        for i in range(1, 4):
            tar_file(logs_file, i)

    设置为定时任务

    这是我的脚本路径(/opt/script/tar_logs.py)

    0 5 * * *  /usr/bin/python   /opt/script/tar_logs.py

    参考  https://www.jianshu.com/p/e79ec1ce39d8

  • 相关阅读:
    批处理读取INI文件
    重装操作系统的20条原则
    SATA串口硬盘Windows Vista系统驱动安装实录
    中国国家地理高清晰的PDF书籍系列经典珍藏版
    单一职责原则
    理解boost::bind的实参传递方式
    理解C++ dynamic_cast
    C# vs C++之三:静态构造函数
    TDD可以驱动设计吗?
    依赖注入与对象间关系
  • 原文地址:https://www.cnblogs.com/xmc2017/p/11232088.html
Copyright © 2020-2023  润新知