commit dce7a38c693565b3e469f977acab653b8dc4d0ee Author: Fabio Erculiani Date: Sun Aug 29 09:49:05 2010 +0200 [entropy.misc] LogFile: remove loggers cache, does more harm than good diff --git a/libraries/entropy/misc.py b/libraries/entropy/misc.py index 0534615..2aa544b 100644 --- a/libraries/entropy/misc.py +++ b/libraries/entropy/misc.py @@ -989,7 +989,6 @@ class LogFile: } LOG_FORMAT = "%(asctime)s %(levelname)s: %(message)s" DATE_FORMAT = "[%H:%M:%S %d/%m/%Y %Z]" - _HANDLER_CACHE = {} def __init__(self, level = None, filename = None, header = "[LOG]"): """ @@ -1014,30 +1013,17 @@ class LogFile: self.__level = LogFile.LEVELS.get(logger_level) self.__logger.setLevel(logging.DEBUG) - handler_cache_key = self.__handler_cache_key() - cached_handler = LogFile._HANDLER_CACHE.get(handler_cache_key) - - if cached_handler is None: - if self.__filename is not None: - try: - self.__handler = logging.FileHandler(self.__filename) - except (IOError, OSError): - self.__handler = logging.StreamHandler() - else: + if self.__filename is not None: + try: + self.__handler = logging.FileHandler(self.__filename) + except (IOError, OSError): self.__handler = logging.StreamHandler() - LogFile._HANDLER_CACHE[handler_cache_key] = self.__handler - self.__handler.setLevel(self.__level) - self.__handler.setFormatter(logging.Formatter(LogFile.LOG_FORMAT, - LogFile.DATE_FORMAT)) - self.__logger.addHandler(self.__handler) else: - self.__handler = cached_handler - - def __handler_cache_key(self): - return (self.__filename, self.__level) - - def __del__(self): - self.close() + self.__handler = logging.StreamHandler() + self.__handler.setLevel(self.__level) + self.__handler.setFormatter(logging.Formatter(LogFile.LOG_FORMAT, + LogFile.DATE_FORMAT)) + self.__logger.addHandler(self.__handler) def fileno(self): return self.__handler.stream.fileno() @@ -1047,16 +1033,17 @@ class LogFile: if hasattr(self.__handler, 'flush'): self.__handler.flush() + def __del__(self): + self.close() + def close(self): """ Close log file """ - handler_cache_key = self.__handler_cache_key() - # drop from cache - handler = LogFile._HANDLER_CACHE.pop(handler_cache_key, None) - if handler is not None: - if hasattr(handler, 'close'): - handler.close() - handler = None - self.__logger = None + if self.__handler is not None: + if hasattr(self.__handler, 'close'): + self.__handler.close() + self.__logger.removeHandler(self.__handler) + self.__handler = None + self.__logger = None def _handler(self, mystr): """