From 3fd6d969bfbdbe400d9cf5b68b5c6ad8f713fe08 Mon Sep 17 00:00:00 2001 From: Zack Cerza Date: Fri, 24 Mar 2017 12:32:33 -0600 Subject: [PATCH] Consolidate sys.excepthook replacements Signed-off-by: Zack Cerza --- teuthology/__init__.py | 13 +++++++++++++ teuthology/run.py | 14 +------------- teuthology/worker.py | 15 +-------------- 3 files changed, 15 insertions(+), 27 deletions(-) diff --git a/teuthology/__init__.py b/teuthology/__init__.py index b7347612be..d037f53a18 100644 --- a/teuthology/__init__.py +++ b/teuthology/__init__.py @@ -80,3 +80,16 @@ def setup_log_file(log_path): handler.setFormatter(formatter) root_logger.addHandler(handler) root_logger.info('teuthology version: %s', __version__) + + +def install_except_hook(): + """ + Install an exception hook that first logs any uncaught exception, then + raises it. + """ + def log_exception(exc_type, exc_value, exc_traceback): + if not issubclass(exc_type, KeyboardInterrupt): + log.critical("Uncaught exception", exc_info=(exc_type, exc_value, + exc_traceback)) + sys.__excepthook__(exc_type, exc_value, exc_traceback) + sys.excepthook = log_exception diff --git a/teuthology/run.py b/teuthology/run.py index eda7e43c3e..3ec1c12f89 100644 --- a/teuthology/run.py +++ b/teuthology/run.py @@ -4,9 +4,9 @@ import StringIO import contextlib import sys import logging -from traceback import format_tb import teuthology +from teuthology import install_except_hook from . import report from .job_status import get_status from .misc import get_user, merge_configs @@ -33,18 +33,6 @@ def set_up_logging(verbose, archive): install_except_hook() -def install_except_hook(): - def log_exception(exception_class, exception, traceback): - logging.critical(''.join(format_tb(traceback))) - if not exception.message: - logging.critical(exception_class.__name__) - return - logging.critical('{0}: {1}'.format( - exception_class.__name__, exception)) - - sys.excepthook = log_exception - - def write_initial_metadata(archive, config, name, description, owner): if archive is not None: with file(os.path.join(archive, 'pid'), 'w') as f: diff --git a/teuthology/worker.py b/teuthology/worker.py index 7593963e98..f73bacaf6a 100644 --- a/teuthology/worker.py +++ b/teuthology/worker.py @@ -8,7 +8,7 @@ import yaml from datetime import datetime -from teuthology import setup_log_file +from teuthology import setup_log_file, install_except_hook from . import beanstalk from . import report from . import safepath @@ -58,19 +58,6 @@ def load_config(ctx=None): teuth_config.archive_base = ctx.archive_dir -def install_except_hook(): - """ - Install an exception hook that first logs any uncaught exception, then - raises it. - """ - def log_exception(exc_type, exc_value, exc_traceback): - if not issubclass(exc_type, KeyboardInterrupt): - log.critical("Uncaught exception", exc_info=(exc_type, exc_value, - exc_traceback)) - sys.__excepthook__(exc_type, exc_value, exc_traceback) - sys.excepthook = log_exception - - def main(ctx): loglevel = logging.INFO if ctx.verbose: -- 2.39.5