Logging no longer uses root logger.

Each module should now log into its own logger.
This commit is contained in:
Lance Stout
2010-11-06 01:28:59 -04:00
parent d0c506f930
commit 4fb77ac878
22 changed files with 342 additions and 272 deletions

View File

@@ -16,6 +16,9 @@ from sleekxmpp.xmlstream import StanzaBase, RESPONSE_TIMEOUT
from sleekxmpp.xmlstream.handler.base import BaseHandler
log = logging.getLogger(__name__)
class Waiter(BaseHandler):
"""
@@ -85,7 +88,7 @@ class Waiter(BaseHandler):
stanza = self._payload.get(True, timeout)
except queue.Empty:
stanza = False
logging.warning("Timed out waiting for %s" % self.name)
log.warning("Timed out waiting for %s" % self.name)
self.stream.removeHandler(self.name)
return stanza

View File

@@ -6,6 +6,8 @@
See the file LICENSE for copying permission.
"""
import logging
from xml.parsers.expat import ExpatError
from sleekxmpp.xmlstream.stanzabase import ET
@@ -18,6 +20,9 @@ from sleekxmpp.xmlstream.matcher.base import MatcherBase
IGNORE_NS = False
log = logging.getLogger(__name__)
class MatchXMLMask(MatcherBase):
"""
@@ -97,8 +102,7 @@ class MatchXMLMask(MatcherBase):
try:
mask = ET.fromstring(mask)
except ExpatError:
logging.log(logging.WARNING,
"Expat error: %s\nIn parsing: %s" % ('', mask))
log.warning("Expat error: %s\nIn parsing: %s" % ('', mask))
if not use_ns:
# Compare the element without using namespaces.

View File

@@ -15,6 +15,9 @@ except ImportError:
import Queue as queue
log = logging.getLogger(__name__)
class Task(object):
"""
@@ -168,13 +171,13 @@ class Scheduler(object):
except KeyboardInterrupt:
self.run = False
if self.parentstop is not None:
logging.debug("stopping parent")
log.debug("stopping parent")
self.parentstop.set()
except SystemExit:
self.run = False
if self.parentstop is not None:
self.parentstop.set()
logging.debug("Quitting Scheduler thread")
log.debug("Quitting Scheduler thread")
if self.parentqueue is not None:
self.parentqueue.put(('quit', None, None))

View File

@@ -16,6 +16,9 @@ from sleekxmpp.xmlstream import JID
from sleekxmpp.xmlstream.tostring import tostring
log = logging.getLogger(__name__)
# Used to check if an argument is an XML object.
XML_TYPE = type(ET.Element('xml'))
@@ -1140,7 +1143,7 @@ class StanzaBase(ElementBase):
Meant to be overridden.
"""
logging.exception('Error handling {%s}%s stanza' % (self.namespace,
log.exception('Error handling {%s}%s stanza' % (self.namespace,
self.name))
def send(self):

View File

@@ -44,6 +44,9 @@ HANDLER_THREADS = 1
SSL_SUPPORT = True
log = logging.getLogger(__name__)
class RestartStream(Exception):
"""
Exception to restart stream processing, including
@@ -206,7 +209,7 @@ class XMLStream(object):
# Used in Windows
signal.signal(signal.SIGTERM, self._handle_kill)
except:
logging.debug("Can not set interrupt signal handlers. " + \
log.debug("Can not set interrupt signal handlers. " + \
"SleekXMPP is not running from a main thread.")
def _handle_kill(self, signum, frame):
@@ -275,7 +278,7 @@ class XMLStream(object):
self.socket = self.socket_class(Socket.AF_INET, Socket.SOCK_STREAM)
self.socket.settimeout(None)
if self.use_ssl and self.ssl_support:
logging.debug("Socket Wrapped for SSL")
log.debug("Socket Wrapped for SSL")
ssl_socket = ssl.wrap_socket(self.socket)
if hasattr(self.socket, 'socket'):
# We are using a testing socket, so preserve the top
@@ -285,7 +288,7 @@ class XMLStream(object):
self.socket = ssl_socket
try:
logging.debug("Connecting to %s:%s" % self.address)
log.debug("Connecting to %s:%s" % self.address)
self.socket.connect(self.address)
self.set_socket(self.socket, ignore=True)
#this event is where you should set your application state
@@ -293,7 +296,7 @@ class XMLStream(object):
return True
except Socket.error as serr:
error_msg = "Could not connect to %s:%s. Socket Error #%s: %s"
logging.error(error_msg % (self.address[0], self.address[1],
log.error(error_msg % (self.address[0], self.address[1],
serr.errno, serr.strerror))
time.sleep(1)
return False
@@ -338,10 +341,10 @@ class XMLStream(object):
"""
Reset the stream's state and reconnect to the server.
"""
logging.debug("reconnecting...")
log.debug("reconnecting...")
self.state.transition('connected', 'disconnected', wait=2.0,
func=self._disconnect, args=(True,))
logging.debug("connecting...")
log.debug("connecting...")
return self.state.transition('disconnected', 'connected',
wait=2.0, func=self._connect)
@@ -378,8 +381,8 @@ class XMLStream(object):
to be restarted.
"""
if self.ssl_support:
logging.info("Negotiating TLS")
logging.info("Using SSL version: %s" % str(self.ssl_version))
log.info("Negotiating TLS")
log.info("Using SSL version: %s" % str(self.ssl_version))
ssl_socket = ssl.wrap_socket(self.socket,
ssl_version=self.ssl_version,
do_handshake_on_connect=False)
@@ -393,7 +396,7 @@ class XMLStream(object):
self.set_socket(self.socket)
return True
else:
logging.warning("Tried to enable TLS, but ssl module not found.")
log.warning("Tried to enable TLS, but ssl module not found.")
return False
def start_stream_handler(self, xml):
@@ -547,7 +550,7 @@ class XMLStream(object):
name -- The name of the event to trigger.
data -- Data that will be passed to each event handler.
Defaults to an empty dictionary.
direct -- Runs the event directly if True, skipping the
direct -- Runs the event directly if True, skipping the
event queue. All event handlers will run in the
same thread.
"""
@@ -557,7 +560,7 @@ class XMLStream(object):
handler[0](copy.copy(data))
except Exception as e:
error_msg = 'Error processing event handler: %s'
logging.exception(error_msg % str(handler[0]))
log.exception(error_msg % str(handler[0]))
if hasattr(data, 'exception'):
data.exception(e)
else:
@@ -622,7 +625,7 @@ class XMLStream(object):
mask = mask.xml
data = str(data)
if mask is not None:
logging.warning("Use of send mask waiters is deprecated.")
log.warning("Use of send mask waiters is deprecated.")
wait_for = Waiter("SendWait_%s" % self.new_id(),
MatchXMLMask(mask))
self.register_handler(wait_for)
@@ -679,7 +682,7 @@ class XMLStream(object):
self.__thread[name].start()
for t in range(0, HANDLER_THREADS):
logging.debug("Starting HANDLER THREAD")
log.debug("Starting HANDLER THREAD")
start_thread('stream_event_handler_%s' % t, self._event_runner)
start_thread('send_thread', self._send_thread)
@@ -717,16 +720,16 @@ class XMLStream(object):
if self.is_client:
self.send_raw(self.stream_header)
except KeyboardInterrupt:
logging.debug("Keyboard Escape Detected in _process")
log.debug("Keyboard Escape Detected in _process")
self.stop.set()
except SystemExit:
logging.debug("SystemExit in _process")
log.debug("SystemExit in _process")
self.stop.set()
except Socket.error:
logging.exception('Socket Error')
log.exception('Socket Error')
except:
if not self.stop.isSet():
logging.exception('Connection error.')
log.exception('Connection error.')
if not self.stop.isSet() and self.auto_reconnect:
self.reconnect()
else:
@@ -756,7 +759,7 @@ class XMLStream(object):
if depth == 0:
# The stream's root element has closed,
# terminating the stream.
logging.debug("End of stream recieved")
log.debug("End of stream recieved")
self.stream_end_event.set()
return False
elif depth == 1:
@@ -770,7 +773,7 @@ class XMLStream(object):
# Keep the root element empty of children to
# save on memory use.
root.clear()
logging.debug("Ending read XML loop")
log.debug("Ending read XML loop")
def _build_stanza(self, xml, default_ns=None):
"""
@@ -781,7 +784,7 @@ class XMLStream(object):
Arguments:
xml -- The XML object to convert into a stanza object.
default_ns -- Optional default namespace to use instead of the
default_ns -- Optional default namespace to use instead of the
stream's current default namespace.
"""
if default_ns is None:
@@ -803,7 +806,7 @@ class XMLStream(object):
Arguments:
xml -- The XML stanza to analyze.
"""
logging.debug("RECV: %s" % tostring(xml,
log.debug("RECV: %s" % tostring(xml,
xmlns=self.default_ns,
stream=self))
# Apply any preprocessing filters.
@@ -852,7 +855,7 @@ class XMLStream(object):
func(*args)
except Exception as e:
error_msg = 'Error processing event handler: %s'
logging.exception(error_msg % str(func))
log.exception(error_msg % str(func))
if hasattr(args[0], 'exception'):
args[0].exception(e)
@@ -865,7 +868,7 @@ class XMLStream(object):
Stream event handlers will all execute in this thread. Custom event
handlers may be spawned in individual threads.
"""
logging.debug("Loading event runner")
log.debug("Loading event runner")
try:
while not self.stop.isSet():
try:
@@ -883,14 +886,14 @@ class XMLStream(object):
handler.run(args[0])
except Exception as e:
error_msg = 'Error processing stream handler: %s'
logging.exception(error_msg % handler.name)
log.exception(error_msg % handler.name)
args[0].exception(e)
elif etype == 'schedule':
try:
logging.debug(args)
log.debug(args)
handler(*args[0])
except:
logging.exception('Error processing scheduled task')
log.exception('Error processing scheduled task')
elif etype == 'event':
func, threaded, disposable = handler
try:
@@ -904,14 +907,14 @@ class XMLStream(object):
func(*args)
except Exception as e:
error_msg = 'Error processing event handler: %s'
logging.exception(error_msg % str(func))
log.exception(error_msg % str(func))
if hasattr(args[0], 'exception'):
args[0].exception(e)
elif etype == 'quit':
logging.debug("Quitting event runner thread")
log.debug("Quitting event runner thread")
return False
except KeyboardInterrupt:
logging.debug("Keyboard Escape Detected in _event_runner")
log.debug("Keyboard Escape Detected in _event_runner")
self.disconnect()
return
except SystemExit:
@@ -929,14 +932,14 @@ class XMLStream(object):
data = self.send_queue.get(True, 1)
except queue.Empty:
continue
logging.debug("SEND: %s" % data)
log.debug("SEND: %s" % data)
try:
self.socket.send(data.encode('utf-8'))
except:
logging.warning("Failed to send %s" % data)
log.warning("Failed to send %s" % data)
self.disconnect(self.auto_reconnect)
except KeyboardInterrupt:
logging.debug("Keyboard Escape Detected in _send_thread")
log.debug("Keyboard Escape Detected in _send_thread")
self.disconnect()
return
except SystemExit: