merge heads

This commit is contained in:
Benjamin Peterson 2012-02-23 15:20:08 -05:00
commit 03d2368748
2 changed files with 33 additions and 27 deletions

View file

@ -1,4 +1,4 @@
# Copyright 2001-2010 by Vinay Sajip. All Rights Reserved. # Copyright 2001-2012 by Vinay Sajip. All Rights Reserved.
# #
# Permission to use, copy, modify, and distribute this software and its # Permission to use, copy, modify, and distribute this software and its
# documentation for any purpose and without fee is hereby granted, # documentation for any purpose and without fee is hereby granted,
@ -16,9 +16,9 @@
""" """
Logging package for Python. Based on PEP 282 and comments thereto in Logging package for Python. Based on PEP 282 and comments thereto in
comp.lang.python, and influenced by Apache's log4j system. comp.lang.python.
Copyright (C) 2001-2010 Vinay Sajip. All Rights Reserved. Copyright (C) 2001-2012 Vinay Sajip. All Rights Reserved.
To use, simply 'import logging' and log away! To use, simply 'import logging' and log away!
""" """
@ -828,8 +828,9 @@ class StreamHandler(Handler):
""" """
Flushes the stream. Flushes the stream.
""" """
if self.stream and hasattr(self.stream, "flush"): with self.lock:
self.stream.flush() if self.stream and hasattr(self.stream, "flush"):
self.stream.flush()
def emit(self, record): def emit(self, record):
""" """
@ -900,12 +901,13 @@ class FileHandler(StreamHandler):
""" """
Closes the stream. Closes the stream.
""" """
if self.stream: with self.lock:
self.flush() if self.stream:
if hasattr(self.stream, "close"): self.flush()
self.stream.close() if hasattr(self.stream, "close"):
StreamHandler.close(self) self.stream.close()
self.stream = None StreamHandler.close(self)
self.stream = None
def _open(self): def _open(self):
""" """

View file

@ -1,4 +1,4 @@
# Copyright 2001-2010 by Vinay Sajip. All Rights Reserved. # Copyright 2001-2012 by Vinay Sajip. All Rights Reserved.
# #
# Permission to use, copy, modify, and distribute this software and its # Permission to use, copy, modify, and distribute this software and its
# documentation for any purpose and without fee is hereby granted, # documentation for any purpose and without fee is hereby granted,
@ -16,10 +16,9 @@
""" """
Additional handlers for the logging package for Python. The core package is Additional handlers for the logging package for Python. The core package is
based on PEP 282 and comments thereto in comp.lang.python, and influenced by based on PEP 282 and comments thereto in comp.lang.python.
Apache's log4j system.
Copyright (C) 2001-2010 Vinay Sajip. All Rights Reserved. Copyright (C) 2001-2012 Vinay Sajip. All Rights Reserved.
To use, simply 'import logging.handlers' and log away! To use, simply 'import logging.handlers' and log away!
""" """
@ -563,9 +562,10 @@ class SocketHandler(logging.Handler):
""" """
Closes the socket. Closes the socket.
""" """
if self.sock: with self.lock:
self.sock.close() if self.sock:
self.sock = None self.sock.close()
self.sock = None
logging.Handler.close(self) logging.Handler.close(self)
class DatagramHandler(SocketHandler): class DatagramHandler(SocketHandler):
@ -767,8 +767,9 @@ class SysLogHandler(logging.Handler):
""" """
Closes the socket. Closes the socket.
""" """
if self.unixsocket: with self.lock:
self.socket.close() if self.unixsocket:
self.socket.close()
logging.Handler.close(self) logging.Handler.close(self)
def mapPriority(self, levelName): def mapPriority(self, levelName):
@ -1096,7 +1097,8 @@ class BufferingHandler(logging.Handler):
This version just zaps the buffer to empty. This version just zaps the buffer to empty.
""" """
self.buffer = [] with self.lock:
self.buffer = []
def close(self): def close(self):
""" """
@ -1144,15 +1146,17 @@ class MemoryHandler(BufferingHandler):
records to the target, if there is one. Override if you want records to the target, if there is one. Override if you want
different behaviour. different behaviour.
""" """
if self.target: with self.lock:
for record in self.buffer: if self.target:
self.target.handle(record) for record in self.buffer:
self.buffer = [] self.target.handle(record)
self.buffer = []
def close(self): def close(self):
""" """
Flush, set the target to None and lose the buffer. Flush, set the target to None and lose the buffer.
""" """
self.flush() self.flush()
self.target = None with self.lock:
BufferingHandler.close(self) self.target = None
BufferingHandler.close(self)