Kaydet (Commit) 9bec7fa7 authored tarafından Vinay Sajip's avatar Vinay Sajip

Misc. backported changes

üst 39871c89
...@@ -52,7 +52,9 @@ __date__ = "27 March 2005" ...@@ -52,7 +52,9 @@ __date__ = "27 March 2005"
# _srcfile is used when walking the stack to check when we've got the first # _srcfile is used when walking the stack to check when we've got the first
# caller stack frame. # caller stack frame.
# #
if string.lower(__file__[-4:]) in ['.pyc', '.pyo']: if hasattr(sys, 'frozen'): #support for py2exe
_srcfile = "logging%s__init__%s" % (os.sep, __file__[-4:])
elif string.lower(__file__[-4:]) in ['.pyc', '.pyo']:
_srcfile = __file__[:-4] + '.py' _srcfile = __file__[:-4] + '.py'
else: else:
_srcfile = __file__ _srcfile = __file__
...@@ -542,6 +544,7 @@ class Filterer: ...@@ -542,6 +544,7 @@ class Filterer:
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
_handlers = {} #repository of handlers (for flushing when shutdown called) _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): class Handler(Filterer):
""" """
...@@ -564,6 +567,7 @@ class Handler(Filterer): ...@@ -564,6 +567,7 @@ class Handler(Filterer):
_acquireLock() _acquireLock()
try: #unlikely to raise an exception, but you never know... try: #unlikely to raise an exception, but you never know...
_handlers[self] = 1 _handlers[self] = 1
_handlerList.insert(0, self)
finally: finally:
_releaseLock() _releaseLock()
self.createLock() self.createLock()
...@@ -666,6 +670,7 @@ class Handler(Filterer): ...@@ -666,6 +670,7 @@ class Handler(Filterer):
_acquireLock() _acquireLock()
try: #unlikely to raise an exception, but you never know... try: #unlikely to raise an exception, but you never know...
del _handlers[self] del _handlers[self]
_handlerList.remove(self)
finally: finally:
_releaseLock() _releaseLock()
...@@ -1085,7 +1090,11 @@ class Logger(Filterer): ...@@ -1085,7 +1090,11 @@ class Logger(Filterer):
""" """
if hdlr in self.handlers: if hdlr in self.handlers:
#hdlr.close() #hdlr.close()
self.handlers.remove(hdlr) hdlr.acquire()
try:
self.handlers.remove(hdlr)
finally:
hdlr.release()
def callHandlers(self, record): def callHandlers(self, record):
""" """
...@@ -1305,7 +1314,7 @@ def shutdown(): ...@@ -1305,7 +1314,7 @@ def shutdown():
Should be called at application exit. 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 #errors might occur, for example, if files are locked
#we just ignore them #we just ignore them
try: try:
......
...@@ -225,9 +225,9 @@ def listen(port=DEFAULT_LOGGING_CONFIG_PORT): ...@@ -225,9 +225,9 @@ def listen(port=DEFAULT_LOGGING_CONFIG_PORT):
""" """
Handle a request. Handle a request.
Each request is expected to be a 4-byte length, Each request is expected to be a 4-byte length, packed using
followed by the config file. Uses fileConfig() to do the struct.pack(">L", n), followed by the config file.
grunt work. Uses fileConfig() to do the grunt work.
""" """
import tempfile import tempfile
try: try:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment