日志格式

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)

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

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

python 打包前三天日志的更多相关文章

  1. 少儿编程崛起?2020年4月编程语言排名发布——Java,C,Python分列前三,Scratch挤进前20

    前三并没有什么悬念,依然是Java,C,Python.C与Java的差距正在缩小,不过我们不用担心,在大数据分析领域Java,Python依然都是不可或缺的. 基于图形的基于块的编程语言Scratch ...

  2. python预科前三天:计算器知识、Python下载和安装、Pycharm下载安装激活设置、解释型和编译型、git、思维导图、显示隐藏文件、隐藏已知文件扩展名、创建组织、创建项目、提交作业、排BUG技巧

    1.计算机组成结构:CPU.硬盘.内存.输入输出设备.主板.电源. 2.硬件之间的协作关系:是CPU运算完后给操作系统.专业术语叫指令. 3.键盘输入a之后发生的事情:键盘-CPU-操作系统-显卡-显 ...

  3. jenkinsapi和python打包工具的安装日志

    Successfully installed PyInstaller-3.3.1 altgraph-0.15 dis3-0.1.2 future-0.16.0 macholib-1.9 pefile- ...

  4. Python 打包的现状:包的三种类型

    英文 | The state of Python Packaging[1] 原作 | BERNAT GABOR 译者 | 豌豆花下猫 声明 :本文获得原作者授权翻译,转载请保留原文出处,请勿用于商业或 ...

  5. 用python+selenium抓取知乎今日最热和本月最热的前三个问题及每个问题的首个回答并保存至html文件

    抓取知乎今日最热和本月最热的前三个问题及每个问题的首个回答,保存至html文件,该html文件的文件名应该是20160228_zhihu_today_hot.html,也就是日期+zhihu_toda ...

  6. Python 全栈开发九 日志模块

    日志是一种可以追踪某些软件运行时所发生事件的方法.软件开发人员可以向他们的代码中调用日志记录相关的方法来表明发生了某些事情.一个事件可以用一个可包含可选变量数据的消息来描述.此外,事件也有重要性的概念 ...

  7. Python 打包——过去、现在与未来

    英文 | Python packaging - Past, Present, Future[1] 原作 | BERNAT GABOR 译者 | 豌豆花下猫 声明 :本文获得原作者授权翻译,转载请保留原 ...

  8. 进击的Python【第三章】:Python基础(三)

    Python基础(三) 本章内容 集合的概念与操作 文件的操作 函数的特点与用法 参数与局部变量 return返回值的概念 递归的基本含义 函数式编程介绍 高阶函数的概念 一.集合的概念与操作 集合( ...

  9. Python 打包和发布方法汇总

    以下主要Python打包汇总,作为学习备份: 一.使用python内部基础工具包Distutils打包程序 1. 在打包之前需要做的就是配置好安装脚本,一般为setup.py文件: 示例(setup. ...

随机推荐

  1. 【POJ1416】Shredding Company

    本题传送门 本题知识点:深度优先搜索 + 回溯 本题题意很简单,就是有一条位数不超过6的数字纸条,问你怎么剪这纸条,使得得到的纸条的值的总和最接近目标值(总和不能超过目标值). 比如第一个样例 50 ...

  2. [WEB安全]源码泄露总结

    原文链接:https://blog.csdn.net/qq_36869808/article/details/88895109 源码泄露总结: svn源码泄露:https://blog.csdn.ne ...

  3. 【XR-4】题

    题面 题解 由题,所求为方程\(y^2 = x^2 + ax + b\)的整数解数量. 两边同乘\(4\),可得\((2y)^2 = 4x^2 + 4ax + 4b\). 配方后得\((2y)^2 = ...

  4. R 指定安装镜像的方法

    方法一 options(repos=structure(c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/"))) install ...

  5. Mercurial 的hook使用

    1. Handling repository events with hooks可以通过Mercurial版本管理工具提供的hooks机制来处理repo的各种事件,从而实现对Mercurial的扩展, ...

  6. leetcode 85. 最大矩形

    题目描述: 给定一个仅包含 0 和 1 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积. 思路分析: 这题是之前那道最大正方形的进阶,同样是利用dp来求解.通过逐行去计算最大矩形,即优化的 ...

  7. Gradle插件和Gradle对应表

    Gradle插件build.gradle文件的buildscript Gradlegradle/wrapper/gradle-wrapper.properties文件 AndroidStudio版本 ...

  8. ssh scp 上传下载文件

    scp username@servername:/path/filename  例如scp codinglog@192.168.0.101:/home/kimi/test.txt  把192.168. ...

  9. centos7安装Redis5.0.5

    1.下载redismkdir /home/redis/cd /home/redis/wget http://download.redis.io/releases/redis-5.0.5.tar.gzt ...

  10. Pan wutong团队技术支持

    本网页为Pan wutong团队的技术支持网址,如果在我们开发的游戏中遇到任何问题,欢迎联系我们! QQ:2535510006 邮箱:2535510006@qq.com