From: Vinay Sajip Date: Thu, 8 Sep 2005 18:14:16 +0000 (+0000) Subject: Added _handlerList to allow shutdown to flush and close handlers in reverse order... X-Git-Tag: v2.5a0~1399 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0ee9ba258ec8fd3c600d6ffa28091f2c6fa8d40c;p=python Added _handlerList to allow shutdown to flush and close handlers in reverse order of creation (see SF# 1282539) --- diff --git a/Lib/logging/__init__.py b/Lib/logging/__init__.py index 642b4ec3d5..cee5fa2cf2 100644 --- a/Lib/logging/__init__.py +++ b/Lib/logging/__init__.py @@ -544,6 +544,7 @@ class Filterer: #--------------------------------------------------------------------------- _handlers = {} #repository of handlers (for flushing when shutdown called) +_handlerList = [] # added to allow handlers to be removed in reverse of order initialized class Handler(Filterer): """ @@ -566,6 +567,7 @@ class Handler(Filterer): _acquireLock() try: #unlikely to raise an exception, but you never know... _handlers[self] = 1 + _handlerList.insert(0, self) finally: _releaseLock() self.createLock() @@ -668,6 +670,7 @@ class Handler(Filterer): _acquireLock() try: #unlikely to raise an exception, but you never know... del _handlers[self] + _handlerList.remove(self) finally: _releaseLock() @@ -1307,7 +1310,7 @@ def shutdown(): Should be called at application exit. """ - for h in _handlers.keys(): + for h in _handlerList[:]: # was _handlers.keys(): #errors might occur, for example, if files are locked #we just ignore them try: