# -*- coding:utf-8 -*-
# !/usr/bin/env python3
# name : Alenx
'''
通過python編寫定時任務壓縮日誌文件
nohup python compressLog.py > my.log &
'''
from apscheduler.schedulers.blocking import BlockingScheduler
import datetime
import time
import os
import zipfile
import logging
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
datefmt='%a, %d %b %Y %H:%M:%S',
filename='myapp.log',
filemode='w')
# 定義一個StreamHandler,將INFO級別或更高的日誌信息打印到標準錯誤,並將其添加到當前的日誌處理對象#
console = logging.StreamHandler()
console.setLevel(logging.INFO)
formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s')
console.setFormatter(formatter)
logging.getLogger('').addHandler(console)
root_path = "/usr/local/tomcat/logs/"
def zip_files(zip_src):
logging.info("begin zip ...")
if (os.path.exists(root_path + zip_src) == False):
logging.info(zip_src + " not found")
return
f = zipfile.ZipFile(root_path + zip_src + ".zip", 'w', zipfile.ZIP_DEFLATED)
f.write(root_path + zip_src)
f.close()
logging.info("zip " + zip_src + " done")
os.remove(root_path + zip_src)
def tick():
logging.info('Tick! The time is: %s' % datetime.datetime.now())
now = datetime.datetime.now()
delta = datetime.timedelta(days=-1) # 獲取前一天的日期
n_days = now + delta
yestoday = n_days.strftime('%Y-%m-%d')
catalina_out = "catalina." + yestoday + ".out"
zip_files(catalina_out)
if __name__ == '__main__':
scheduler = BlockingScheduler()
scheduler.add_job(tick, 'cron', hour='2') # 每天兩點執行
# print('Press Ctrl+{0} to exit'.format('Break' if os.name == 'nt' else 'C'))
try:
scheduler.start()
except (KeyboardInterrupt, SystemExit):
scheduler.shutdown()
通過python編寫定時任務壓縮日誌文件
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.