From 884eef4bd52a33d13a1c509bf004842fa7b58652 Mon Sep 17 00:00:00 2001 From: Marco Pesenti Gritti Date: Fri, 11 Aug 2006 13:21:11 +0000 Subject: Show all activities output in the console, just activate the tab for the current activity. --- (limited to 'sugar/logger.py') diff --git a/sugar/logger.py b/sugar/logger.py index 54cb15b..df5aebd 100644 --- a/sugar/logger.py +++ b/sugar/logger.py @@ -1,8 +1,14 @@ +import sys import logging +import traceback +from cStringIO import StringIO import dbus import gobject +__sugar_shell = None +__console_id = None + class Handler(logging.Handler): def __init__(self, shell, console_id): logging.Handler.__init__(self) @@ -13,8 +19,8 @@ class Handler(logging.Handler): def _log(self): for message in self._messages: - # FIXME use a single dbus call self._shell.log(self._console_id, message) + self._messages = [] return False def emit(self, record): @@ -22,6 +28,12 @@ class Handler(logging.Handler): if len(self._messages) == 1: gobject.idle_add(self._log) +def __exception_handler(typ, exc, tb): + trace = StringIO() + traceback.print_exception(typ, exc, tb, None, trace) + + __sugar_shell.log(__console_id, trace.getvalue()) + def start(console_id, shell = None): root_logger = logging.getLogger('') root_logger.setLevel(logging.DEBUG) @@ -32,3 +44,10 @@ def start(console_id, shell = None): shell = dbus.Interface(proxy_obj, 'com.redhat.Sugar.Shell') root_logger.addHandler(Handler(shell, console_id)) + + global __sugar_shell + global __console_id + + __sugar_shell = shell + __console_id = console_id + sys.excepthook = __exception_handler -- cgit v0.9.1