Eric Smith <e...@trueblade.com> added the comment: Here's a version that would be more analogous to what the C implementation would look like. It uses a class instead of a closure to capture the "chain" value. The 2 exposed functions syslog_exception and enable_exception_logging are the new APIs in this proposal, which would be written in C as part of the syslog module. The class is a hidden implementation detail.
######################## import traceback import syslog import sys def syslog_exception(etype, evalue, etb): # The result of traceback.format_exception might contain # embedded newlines, so we have the nested loops. for line in traceback.format_exception(etype, evalue, etb): for line in line.rstrip().split('\n'): syslog.syslog(line) class _Hook(object): def __init__(self, chain): # Should we chain to the existing sys.excepthook? self._current_hook = sys.excepthook if chain else None def _hook(self, etype, evalue, etb): if self._current_hook: self._current_hook(etype, evalue, etb) syslog_exception(etype, evalue, etb) def enable_exception_logging(chain=True): sys.excepthook = _Hook(chain)._hook ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue8214> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com