in clay/logger.py [0:0]
def run(self):
'''
Main loop of the logger thread. All network I/O and exception handling
originates here. Strings are consumed from self.queue and sent to
self.sock, creating a new connection if necessary.
If any exceptions are caught, the message is put() back on the queue
and the exception is allowed to propagate up through
logging.Handler.handleError(), potentially causing this thread to abort.
'''
INTERNAL_LOG.debug('Log I/O thread started')
while True:
record = self.queue.get()
if record is None:
break
jsonrecord = self.jsonify(record)
jsonrecord = '%s\n' % jsonrecord
try:
if self.sock is None:
self.connect()
self.send(jsonrecord)
except Exception:
# This exception will be silently ignored and the message
# requeued unless self.raiseExceptions=1
self.queue.put(record)
self.handleError(record)
self.queue.task_done()
INTERNAL_LOG.debug('Log I/O thread exited cleanly')