Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSascha 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)
commitccffdaffc1870bf7d039064e7b3af27464fc22b7 (patch)
tree7f6f9b4332dc8da21dd51ed82813a5bc87ccfe62
parent5ac4a4df3e98ef892c50c5d3dbe99321e5da3b4e (diff)
Print stack when encountering an exception during log formattingHEADmaster
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.py6
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'])