[Python-ideas] Adding exception logging function to syslog module.
eric at trueblade.com
Tue Mar 23 21:24:41 CET 2010
Eric Smith wrote:
> I think this would be a great addition. I have to do similar things all
> of the time, although I never though of using sys.excepthook, for some
> reason. I'll have to steal your code in the meantime!
> A simpler pure Python version would be:
> from __future__ import print_function
> def logexceptions(also_stderr=True):
> import sys
> import traceback
> import syslog
> 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'):
> if also_stderr:
> print(line, file=sys.stderr)
> sys.excepthook = syslog_exception
On second thought, maybe it would be better to optionally chain to the
existing sys.excepthook instead of assuming it writes to stderr. The
above code would become:
current_hook = sys.excepthook
def syslog_exception(etype, evalue, etb):
current_hook(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'):
sys.excepthook = syslog_exception
I think I'll open an issue for this. I don't think the language
moratorium would preclude its addition.
More information about the Python-ideas