import logging import os, sys import threading import time from datetime import datetime from logging.handlers import RotatingFileHandler BASE_PATH = os.path.dirname(__file__) + '\\' LOGFILE='my_logger.log' logPath = os.path.join(BASE_PATH, LOGFILE) logging.basicConfig(level=logging.DEBUG) logger = logging.getLogger('MainLog') logCheck = logging.getLogger('CheckLog') logTask = logging.getLogger('taskLog') # gestore handler x logrotate handler = RotatingFileHandler(logPath, maxBytes=1024*16, backupCount=10 ) # Define a custom formatter formatter = logging.Formatter('%(asctime)s %(name)-8s %(levelname)-8s %(message)s') handler.setFormatter(formatter) logger.addHandler(handler) logCheck.addHandler(handler) logTask.addHandler(handler) #--------------------------------------------------------------- # funzione timer thread #--------------------------------------------------------------- def do_every (interval, worker_func, iterations = 0): if iterations != 1: threading.Timer ( interval, do_every, [interval, worker_func, 0 if iterations == 0 else iterations-1] ).start (); worker_func (); #--------------------------------------------------------------- # funzione verifica LOG #--------------------------------------------------------------- def checkLog(): global LOGFILE try: # verifico logfile... logCheck.info("verifica log") # logPath = os.path.join(BASE_LOG_PATH, LOGFILE) # fileSize = os.path.getsize(logPath) except Exception as exc : sys.stdout.write ( '\n errore in checkLog \n\n' ) #--------------------------------------------------------------- # funzione WatchDog verso REDIS #--------------------------------------------------------------- def sendWatchDog(): # invio su redis stato adesso = datetime.now() logTask.debug('Invio a REDIS segnale watchdog') do_every ( 0.2 , checkLog ) do_every ( 0.1 , sendWatchDog ) for _ in range(10000): time.sleep (0.01) logger.debug('Hello, world!')