Files
sablink-distro/sys-apps/entropy/files/entropy-fix-logger.patch
T

85 lines
3.0 KiB
Diff

commit dce7a38c693565b3e469f977acab653b8dc4d0ee
Author: Fabio Erculiani <lxnay@sabayon.org>
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):
"""