# coding=utf-8
import os, time, sys, logging, datetime
__LOGFILE_NAME__ = "%s.log" % os.path.basename(sys.argv[0])
# 每天执行时间
cTime = "14:45"
# (1)清理应用日志内容文件夹列表
del_log_list = ['/root']
# (2)清理服务器指定目录内容文件夹列表
del_temp_list = ['/etc/nginx']
# (3)清理服务器备份的war包文件文件夹列表
dir_list = ['/usr/local/tomcat9']
def get_logger(name):
formatter = logging.Formatter('%(levelname)s: %(asctime)s %(funcName)s(%(lineno)d) -- %(message)s',
datefmt='%Y-%m-%d %H:%M:%S')
logger = logging.getLogger(name)
log_path = os.path.join(__LOGFILE_NAME__)
fh = logging.FileHandler(log_path)
fh.setFormatter(formatter)
logger.addHandler(fh)
ch = logging.StreamHandler()
ch.setFormatter(formatter)
logger.addHandler(ch)
logger.setLevel(logging.DEBUG)
return logger
class DelLogUtil():
def __init__(self, __LOG):
# 日志模块:
self.LOG = __LOG
def del_log(self, log_file_dir):
# 获取当前时间
today = datetime.datetime.now()
# 计算偏移量,前7天
offset = datetime.timedelta(days=-7)
# 获取想要的日期的时间,即前7天时间
re_date = (today + offset)
# 前3天时间转换为时间戳
re_date_unix = time.mktime(re_date.timetuple())
''' 删除目录中log日志文件'''
try:
if os.path.isdir(log_file_dir):
for file in os.listdir(log_file_dir):
filename = os.path.join(log_file_dir, file)
if filename[-4:] == ".log":
if os.stat(filename).st_mtime <= re_date_unix:
os.remove(filename)
self.LOG.debug("Del {filename} Success!!! ".format(filename=filename))
except Exception as e:
print(e)
def del_temp(self, temp_dir):
try:
for tdir in os.listdir(temp_dir):
fulltdir = os.path.join(temp_dir, tdir)
os.system("rm -rf %s" % fulltdir)
self.LOG.debug("Del {filename} Success!!! ".format(filename=fulltdir))
except Exception as e:
# pass
print(e)
def del_war(self, file_dir):
# 获取当前时间
today = datetime.datetime.now()
# 计算偏移量,前3天
offset = datetime.timedelta(days=-3)
# 获取想要的日期的时间,即前3天时间
re_date = (today + offset)
# 前3天时间转换为时间戳
re_date_unix = time.mktime(re_date.timetuple())
''' 递归删除目录及其子目录, 子文件'''
try:
for item in os.listdir(file_dir):
itempath = os.path.join(file_dir, item)
if os.stat(itempath).st_mtime <= re_date_unix:
if os.path.isdir(itempath):
os.system("rm -rf %s" % itempath)
self.LOG.debug("Del {filename} Success!!! ".format(filename=itempath))
except Exception as e:
# pass
print(e)
if __name__ == '__main__':
LOG = get_logger(__name__)
# print time.localtime()
while True:
try:
# 当前时间
nowTime = time.strftime('%H:%M', time.localtime())
oTime = cTime.strip()
nTime = nowTime.strip()
if oTime == nTime:
targetDir = "" # Config.delPath().strip()
df = DelLogUtil(LOG)
nowTime = time.strftime('%H:%M', time.localtime())
LOG.debug("==== DelLogStart: "
"StartTime:{nowTime} ====".format(nowTime=nowTime))
# (1)清理应用日志内容
for log_file_dir in del_log_list:
if os.path.isdir(log_file_dir):
df.del_log(log_file_dir)
else:
LOG.debug("Dir Not Exists: Dir:{ldir}".format(ldir=log_file_dir))
# (2)清理服务器指定目录内容
for temp_dir in del_temp_list:
if os.path.isdir(temp_dir):
df.del_temp(temp_dir)
else:
LOG.debug("Dir Not Exists: Dir:{ldir}".format(ldir=temp_dir))
# (3)清理服务器备份的war包文件
for file_dir in dir_list:
if os.path.isdir(file_dir):
df.del_war(file_dir)
else:
LOG.debug("Dir Not Exists: Dir:{ldir}".format(ldir=file_dir))
endTime = time.strftime('%H:%M', time.localtime())
LOG.debug("==== DelLogEnd: "
"EndTime:{endTime} ====".format(endTime=endTime))
time.sleep(20)
except Exception as e:
# print e
time.sleep(20)