python监控日志并予以清理

Daemonize.py 

import os
import sys
 
class Daemonize:
     def daemonize( self ):
         try :
             pid = os.fork()
             if pid > 0 :
                 sys.exit( 0 )
         except OSError,e:
             sys.stderr.write( "Fork 1 has failed --> %d--[%s]\n" \
                              % (e.errno,e.strerror))
             sys.exit( 1 )
 
         os.chdir( '/' )
         #detach from terminal
         os.setsid()
         #file to be created?
         os.umask( 0 )
 
         try :
             pid = os.fork()
             if pid > 0 :
                 print "Daemon process pid %d" % pid
                 sys.exit( 0 )
         except OSError, e:
             sys.stderr.write( "Fork 2 has failed --> %d--[%s]" \
                              % (e.errno, e.strerror))
             sys.exit( 1 )
 
         sys.stdout.flush()
         sys.stderr.flush()
 
     def start_daemon( self ):
         self .daemonize()
         self .run_daemon()
 
     def run_daemon( self ):
         '''override'''
         pass
    

watchLog.py

import os
import smtplib
from smtplib import SMTPException
import time
 
from Daemonize import Daemonize
 
from subprocess import Popen
 
LOG_PATH = ''
LOG_FILENAME = ''
 
class WatchLog(Daemonize):
 
     def __init__( self , file_path, size_limit = 15728640 ):
         self . file = os.path.realpath(file_path)
         print self . file
         print '---'
         assert os.path.isfile( self . file ), '%s does not exist' % self . file
         print '+++'
         self .smtpserver = "path to your host"
         self .recipient_list = [ '@gmail.com' ]
         self .sender = '@'
         self .file_size_limit = size_limit
         self .email_body = "path to your email tempalte"
 
     def send_an_email( self ):
 
         email_body = open ( self .email_body, 'r' ).read()
         session_obj = smtplib.SMTP( self .smtpserver)
         try :
             session_obj.sendmail( self .sender, self .recipient_list, email_body)
         except SMTPException:
             print "unable to send emails"
         finally :
             session_obj.close()
             
     def delFile( self ):
         os.chdir(LOG_PATH)
         cmd = "echo '' > " + LOG_FILENAME
         try :
             Popen(cmd, shell = True )
         except Exception,e:
             print e
 
     def watch( self ):
         current_file_size = os.path.getsize( self . file )
         if current_file_size > self .file_size_limit:
             self .defFile()
             
     def run_daemon( self ): #override
         while True :
             self .watch()
             time.sleep( 3600 )
 
if __name__ = = "__main__" :
     watchdog = WatchLog(LOG_PATH + LOG_FILENAME)
     watchdog.start_daemon()



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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值