使用Python指令碼處理應用每天產生的日誌檔案
阿新 • • 發佈:2018-12-19
分享一個工作中使用的指令碼
伺服器每天都會產生大量的日誌檔案,這些日誌檔案慢慢的會佔滿伺服器的空間,所以需要定時去清理一下,下面是用Python寫的一個清理昨天日誌的指令碼
#!/usr/bin/python # -*- coding: UTF-8 -*- import os import datetime import re # 定義要掃描的檔案路徑 logs = [ '/usr/Application/tomcat7/logs', '/usr/Application/tomcat8/logs', '/tmp' ] # 獲取昨天日期,可自定義格式 yesterday = (datetime.date.today() - datetime.timedelta(days=1)).strftime("%Y-%m-%d") # 清理日誌的主函式 def cleanLog(path): files = os.listdir(path) for fileDir in files: yesterdayFile = re.search(yesterday, fileDir) if yesterdayFile: os.system('rm -rf ' + path + '/' + fileDir) # if __name__ == "__main__": for path in logs: cleanLog(path)
主要的幾個命令是:
獲取昨天日期的格式化後的字串
yesterday = (datetime.date.today() - datetime.timedelta(days=1)).strftime("%Y-%m-%d")
這個需要引入import datetime
使用正則表示式匹配對應的檔案
re.search(yesterday, fileDir)
這個search方法會查詢字串裡面匹配的字串,查詢不到會返回一個None物件
執行刪除命令
os.system('rm -rf ' + path + '/' + fileDir)
這裡是直接執行的rm命令,其實也可以換成gzip命令。
os.system('gzip ' + path + '/' + fileDir)
這樣就可以把日誌檔案壓縮,從而大大節省伺服器的空間。
最後把這個放到Linux的crontab定時任務裡,每天凌晨執行即可。
05 00 * * * /usr/bin/python /usr/script/cleanLogsFile.py
本文同步發在微信公眾號上,感興趣的可以關注一波