diff options
author | Sascha Silbe <sascha-org-sugar-git@silbe.org> | 2010-03-24 11:05:14 (GMT) |
---|---|---|
committer | Sascha Silbe <sascha-pgp@silbe.org> | 2010-08-26 18:33:25 (GMT) |
commit | ccffdaffc1870bf7d039064e7b3af27464fc22b7 (patch) | |
tree | 7f6f9b4332dc8da21dd51ed82813a5bc87ccfe62 | |
parent | 5ac4a4df3e98ef892c50c5d3dbe99321e5da3b4e (diff) |
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.
-rw-r--r-- | src/sugar/logger.py | 6 |
1 files changed, 6 insertions, 0 deletions
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']) |