日志格式

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. javascript使用H5新版媒体接口navigator.mediaDevices.getUserMedia,做扫描二维码,并识别内容

    本文代码测试要求,最新的chrome浏览器(手机APP),并且要允许chrome拍照录像权限,必须要HTTPS协议,http不支持. 原理:调用摄像头,将摄像头返回的媒体流渲染到视频标签中,再通过ca ...

  2. 【BIEE】导出大量数据报错处理请求时出现致命错误。服务器响应为 com.siebel.analytics.utils.InputStreamWithLimit$ReadOverTheLimitException

    问题描述 在使用BIEE导出大量数据的时候,报错如下: 处理请求时出现致命错误.服务器响应为: com.siebel.analytics.utils.InputStreamWithLimit$Read ...

  3. jmeter-可视化的非GUI模式

    概述 我们在使用JMeter执行性能测试的过程中,会遇到很多不方便的地方 GUI模式 执行脚本很方便,看结果也很方便,但是GUI模式消耗资源,对测试结果的准确性影响很大 非GUI模式 消耗资源很少,但 ...

  4. uniapp - 富文本编辑器editor(仅支持App和微信小程序)

    uniapp - editor富文本编辑器用法示例 丢几个图,用心看下去(-.-) 这里使用了https://ext.dcloud.net.cn/plugin?id=412 插件,用于选择字体颜色.其 ...

  5. Linux环境下安装python3

    1.安装前准备 CentOS 7 中默认安装了 Python,版本:2.7.5,由于很多基本的命令.软件包都依赖旧版本,比如:yum.所以,在更新 Python 时,建议不要删除旧版本,而且新旧版本可 ...

  6. C# 序列化与反序列化之DataContract与xml对子类进行序列化的解决方案

    C# 序列化与反序列化之DataContract与xml对子类进行序列化的解决方案 1.DataContract继承对子类进行序列化的解决方案 第一种是在 [DataContract, KnownTy ...

  7. APP测试要点整理

    APP测试基本流程以及APP测试要点https://www.cnblogs.com/dengqing9393/p/6497068.html 性能测试:https://blog.csdn.net/xia ...

  8. 【java编程】vo、po、dto、bo、pojo、entity、mode如何区分

    Java Bean:一种可重用组件,即“一次编写,任何地方执行,任何地方重用”.满足三个条件 类必须是具体的和公共的 具有无参构造器 提供一致性设计模式的公共方法将内部域或暴露成员属性 VO valu ...

  9. Linux创建用户,SFTP只允许访问指定目录

    首先创建用户 useradd lus1passwd lus1 我这里配置lus1这个用户目录,为sftp指向目录,即/home/lus1/ vim /etc/ssh/sshd_config //这个记 ...

  10. 运维笔记--线上服务器git环境配置

    场景描述: 我们采用git去管理代码分支,本地开发环境,线上服务器多数情况下也会使用git去管理程序代码,那么新的一台服务器,如果指定了目标路径作为代码存放路径,该如何配置git环境, 以达到跟远程服 ...