From ccffdaffc1870bf7d039064e7b3af27464fc22b7 Mon Sep 17 00:00:00 2001 From: Sascha Silbe Date: Wed, 24 Mar 2010 11:05:14 +0000 Subject: Print stack when encountering an exception during log formatting When encountering an exception during log formatting, the default log handler only shows a backtrace up to the logging function, hiding the actual place of the error. By printing the stack in addition to the exception, we can pinpoint the faulty log statement. --- diff --git a/src/sugar/logger.py b/src/sugar/logger.py index 275c57d..6a6b574 100644 --- a/src/sugar/logger.py +++ b/src/sugar/logger.py @@ -25,6 +25,7 @@ import collections import errno import logging import sys +import traceback import os import repr as repr_ import decorator @@ -107,9 +108,14 @@ def start(log_filename=None): if e.errno != errno.ENOSPC: raise e + def handleError(record): + traceback.print_exc() + traceback.print_stack() + logging.basicConfig(level=logging.WARNING, format="%(created)f %(levelname)s %(name)s: %(message)s", stream=SafeLogWrapper(sys.stderr)) + root_logger.handlers[0].handleError = handleError if 'SUGAR_LOGGER_LEVEL' in os.environ: set_level(os.environ['SUGAR_LOGGER_LEVEL']) -- cgit v0.9.1