Some traceback logging fails to account for the fact that tracebacks consist of multiple line. So we have this code: self.log.error("Unhandled exception trying to unbind ports for display %d on VSM Agent %s: %s %s %s. Marking agent as down." % \ (self.display, self.url[1], exception, info, format_exc())) Which would seem like it produces a single line. But instead we get this mess: 2015-10-01 15:42:11 ERROR vsmserver.session: Unhandled exception trying to unbind ports for display 1 on VSM Agent 127.0.0.1:904: <type 'exceptions.TypeError'> 'NoneType' object has no attribute '__getitem__' Tr aceback (most recent call last): File "/opt/thinlinc/modules/thinlinc/vsm/async.py", line 112, in iii11 obj . handle_read_event ( ) File "/usr/lib64/python2.7/asyncore.py", line 449, in handle_read_event self.handle_read() File "/usr/lib64/python2.7/asynchat.py", line 147, in handle_read self.found_terminator() File "/opt/thinlinc/modules/thinlinc/vsm/xmlrpc.py", line 405, in found_terminator self . handle_response ( ) File "/opt/thinlinc/modules/thinlinc/vsm/xmlrpc.py", line 437, in handle_response self . handle_returnvalue ( ) File "/opt/thinlinc/modules/thinlinc/vsm/call_unbindports.py", line 41, in handle_returnvalue self . callback ( ) File "/opt/thinlinc/modules/thinlinc/vsm/loginhandler_common.py", line 71, in run_sessionscripts self . send_response ( ) File "/opt/thinlinc/modules/thinlinc/vsm/loginhandler_common.py", line 88, in send_response oOOoo ) [ 'sessionkey' ] TypeError: 'NoneType' object has no attribute '__getitem__' . Marking agent as down.