先說一下我設定的清理日志原理:
每天都建立一個新的日志檔案來存儲日志,每次啟用程式時檢查日志目錄裡的所有日志檔案,自動清理上個月之前的日志。
如圖,我把日期存在當天日志的名字裡。
然後周遊目錄下所有的檔案名,提取出年份和月份資訊,和今天的年份和月份資訊進行對比,篩選出上個月之前的日志檔案進行删除操作。
import logging # 日志子產品
import datetime # 時間子產品
import os
# 設定日志存放路徑
path = '.\\log\\'
if(not os.path.exists(path)):
os.mkdir(path)
# 擷取今天的日期 格式2019-08-01
today_date = str(datetime.date.today())
# 定義日志
logging.basicConfig(filename = path + 'log_' + today_date + '.txt', level = logging.DEBUG, filemode = 'a', format = '【%(asctime)s】 【%(levelname)s】 >>> %(message)s', datefmt = '%Y-%m-%d %H:%M')
# 清理上個月的日志
def clean_log():
global path
global today_date
# 周遊目錄下的所有日志檔案 i是檔案名
for i in os.listdir(path):
file_path = path + i # 生成日志檔案的路徑
# 擷取日志的年月,和今天的年月
today_m = int(today_date[5:7]) # 今天的月份
m = int(i[9:11]) # 日志的月份
today_y = int(today_date[0:4]) # 今天的年份
y = int(i[4:8]) # 日志的年份
# 對上個月的日志進行清理,即删除。
if(m < today_m):
if(os.path.exists(file_path)): # 判斷生成的路徑對不對,防止報錯
os.remove(file_path) # 删除檔案
elif(y < today_y):
if(os.path.exists(file_path)):
os.remove(file_path)
喜歡的點個贊❤吧!