#!/usr/bin/python
# coding:utf-8
import os
import time
import daemon
import logging
import logging.handlers
import datetime
#config.fileConfig(配置文件路径)
#logger = logging.getLogger(日志名)
from pyinotify import WatchManager, Notifier,ProcessEvent,IN_DELETE, IN_CREATE,IN_MODIFY
class EventHandler(ProcessEvent):
def process_IN_CREATE(self, event):
print(time.strftime("%Y-%m-%d %H:%M:%S"),"Create file: ",os.path.join(event.path,event.name))
#logger.critical("This is a critical message")
#logger.info("%s %s %s",time.strftime("%Y-%m-%d %H:%M:%S"),"Create file: ",os.path.join(event.path,event.name))
logger.info("%s %s","Create file: ",os.path.join(event.path,event.name))
def process_IN_DELETE(self, event):
print("Delete file: ",os.path.join(event.path,event.name))
#logger.info("%s %s %s",time.strftime("%Y-%m-%d %H:%M:%S"),"Delete file: ",os.path.join(event.path,event.name))
logger.info("%s %s","Delete file: ",os.path.join(event.path,event.name))
def process_IN_MODIFY(self, event):
print("Modify file: ", os.path.join(event.path,event.name))
#logger.info("%s %s %s",time.strftime("%Y-%m-%d %H:%M:%S"),"Modify file: ", os.path.join(event.path,event.name))
logger.info("%s %s","Modify file: ", os.path.join(event.path,event.name))
def FSMonitor(path='.'):
wm = WatchManager()
mask = IN_DELETE | IN_CREATE |IN_MODIFY
#notifier = Notifier(wm, EventHandler())
handler = EventHandler()
notifier = Notifier(wm, handler)
wm.add_watch(path, mask,auto_add=True,rec=True)
print(time.strftime("%Y-%m-%d %H:%M:%S"),'Now starting monitor ',(path))
#logger.info("%s %s %s" % (time.strftime("%Y-%m-%d %H:%M:%S"),"now starting monitor ",path))
logger.info("%s %s" % ("Now starting monitor ",path))
while True:
try:
notifier.process_events()
if notifier.check_events():
notifier.read_events()
except KeyboardInterrupt:
notifier.stop()
break
if __name__ == "__main__":
logger=logging.getLogger("test_mon")
# handler=logging.FileHandler("log_monitor.log")
# logger.addHandler(handler)
logger.setLevel(logging.DEBUG)
all_handler = logging.handlers.TimedRotatingFileHandler('./log/log.log', when='midnight', interval=1, backupCount=15,atTime=datetime.time(0, 0, 0, 0)) # 15 ?
all_handler.setFormatter(logging.Formatter("%(asctime)s - %(levelname)s - %(filename)s[:%(lineno)d] - %(message)s"))
all_handler.setLevel(logging.DEBUG)
logger.addHandler(all_handler)
preserve_fds = [handler.stream for handler in logger.handlers]
with daemon.DaemonContext(files_preserve = preserve_fds):
FSMonitor('/data01/compile/wafftest/test')
# FSMonitor('/data01/compile/wafftest/test')