import functools import logging class LogzioFlusher(logging.Logger): def __init__(self, logger): self.logger = logger def __call__(self, function): @functools.wraps(function) def wrapper(*args, **kwargs): try: return function(*args, **kwargs) except Exception as e: self.logger.exception('call failed: {}'.format(e)) raise finally: [h.flush() for h in self.logger.root.handlers] return wrapper