python 日志不会按照日期分割_python日志切割保留一个月

公司的nginx日志都放在一个文件里,时间长了,日志也变的很大,查起来也很不方便,所以决定将nginx的日志切割下,当然日志切割用shell写更方便,但为了让自己多实践下python,故用python来实现。日志切割需求:每天切割nginx日志,保留一个月的即可。以下是具体实现方法。

#!/usr/bin/env python

# coding=utf-8

# author:xupeng(xupeng.js@gmail.com)

# Description:nginx日志切割脚本

# Usage crontab: 59 23 * * * python /path/logcron.py

import os

import glob

import time

import shutil

#日志路径

path = '/htdocs/logs'

#切割后日志路径

cut_path = '/htdocs/cutlogs'

#nginx pid

nginx_pid = '/usr/local/nginx/nginx.pid'

#删除之前一个月的日志目录

year = int(time.strftime("%Y", time.localtime()))

month = int(time.strftime("%m", time.localtime()))

if (month == 1):

year = year - 1

month = 12

else:

month = month - 1

year = str(year)

month = str(month)

if (len(month) == 1):

month = '0' + month

olddir = cut_path +'/' + year + month

if os.path.exists(olddir):

shutil.rmtree(olddir)

#创建目录

cut_path = cut_path + '/' + str(time.strftime("%Y%m", time.localtime())) + '/'

if not os.path.exists(cut_path):

os.makedirs(cut_path)

#切割日志目录下的日志

files = glob.glob("%s/*.log"%(path))

for sfile in files:

filearr = sfile.split('.')

filename = filearr[0]

filename = filename.split(path)

filename = filename[1].replace('/', '')

newfilename = cut_path + filename + '_' + str(time.strftime("%Y%m%d", time.localtime())) + '.log'

#print newfilename

os.system("mv %s %s"%(sfile,newfilename))

#重新打开日志文件

os.system("kill -s USR1 `cat %s`"%(nginx_pid))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值