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
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
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:
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
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: