1. 程式人生 > >使用Python指令碼處理應用每天產生的日誌檔案

使用Python指令碼處理應用每天產生的日誌檔案

分享一個工作中使用的指令碼

伺服器每天都會產生大量的日誌檔案,這些日誌檔案慢慢的會佔滿伺服器的空間,所以需要定時去清理一下,下面是用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

本文同步發在微信公眾號上,感興趣的可以關注一波

在這裡插入圖片描述