清理日志代码
1、写一个清理日志的脚本,
1、把3天前的日志文件删掉
2、如果3天内的日志文件为空的话,也删掉,但是不删除当天的
2、代码
import os #引入os模块
import time #引入time模块
def str_to_timestamp(string=None, format="%Y-%m-%d %H:%M:%S"):#定义一个函数,计算文件的时间戳
if string:
t = time.strptime(string, format)
return int(time.mktime(t))
return int(time.time())
def clean_logs(path, day=3):
for file in os.listdir(path):
if not file.endswith(".log"):
continue
f1 = file.split(".")[0]#以下三行是以切割的方式获取文件名中的日期,这里根据你自己日志文件名称格式进行分割,我的文件格式是(nginx_2021-10-08.log))
file_date = f1.split("_")[1]
file_timestamp = str_to_timestamp(file_date, "%Y-%m-%d")
day_second = 60 * 60 * 24 * day#计算n天的时间戳
before_timestamp = str_to_timestamp(format="%Y-%m-%d") - day_second # n天前的时间戳
asb_path = os.path.join(path, file)
if file_timestamp < before_timestamp:#如果文件的时间戳小于n天前的时间戳
os.remove(asb_path)#删除日志文件
elif os.path.getsize(asb_path) == 0 and \
file_timestamp != str_to_timestamp(format="%Y-%m-%d"):#文件大小为0和不是当天的日志文件
os.remove(asb_path)#删除日志文件
print("日志清理完成")
clean_logs("logs")