X-Git-Url: https://wannabe.guru.org/gitweb/?a=blobdiff_plain;f=bootstrap.py;h=1fcdec3de7f223230910bb24797a1bd68ca10134;hb=47ece7bceb442d70ddcc3c728533c4d4d2bccde4;hp=117468623b94e578894561d0ff6fede8a9a33135;hpb=532df2c5b57c7517dfb3dddd8c1358fbadf8baf3;p=python_utils.git diff --git a/bootstrap.py b/bootstrap.py index 1174686..1fcdec3 100644 --- a/bootstrap.py +++ b/bootstrap.py @@ -93,18 +93,24 @@ def handle_uncaught_exception(exc_type, exc_value, exc_tb): sys.__excepthook__(exc_type, exc_value, exc_tb) return else: + import io + import traceback + + tb_output = io.StringIO() + traceback.print_tb(exc_tb, None, tb_output) + print(tb_output.getvalue(), file=sys.stderr) + logger.error(tb_output.getvalue()) + tb_output.close() + + # stdin or stderr is redirected, just do the normal thing if not sys.stderr.isatty() or not sys.stdin.isatty(): - # stdin or stderr is redirected, just do the normal thing ORIGINAL_EXCEPTION_HOOK(exc_type, exc_value, exc_tb) - else: - # a terminal is attached and stderr is not redirected, maybe debug. - import traceback - traceback.print_exception(exc_type, exc_value, exc_tb) + else: # a terminal is attached and stderr isn't redirected, maybe debug. if config.config['debug_unhandled_exceptions']: + logger.info("Invoking the debugger...") import pdb - logger.info("Invoking the debugger...") pdb.pm() else: ORIGINAL_EXCEPTION_HOOK(exc_type, exc_value, exc_tb)