From 628271959c97c49b64ed16203a5d8a2d0202ede7 Mon Sep 17 00:00:00 2001 From: Marco Pesenti Gritti Date: Fri, 11 Aug 2006 11:05:33 +0000 Subject: Refactor the console stuff --- (limited to 'sugar') diff --git a/sugar/LogWriter.py b/sugar/LogWriter.py deleted file mode 100644 index ba8bdb0..0000000 --- a/sugar/LogWriter.py +++ /dev/null @@ -1,34 +0,0 @@ -import sys -import logging - -import dbus - -import sugar.env - -class LogWriter: - def __init__(self, application, use_console = True): - self._application = application - self._use_console = use_console - - bus = dbus.SessionBus() - proxy_obj = bus.get_object('com.redhat.Sugar.Shell', '/com/redhat/Sugar/Shell') - self._logger = dbus.Interface(proxy_obj, 'com.redhat.Sugar.Shell') - - def start(self): - if self._use_console: - sys.stdout = self - sys.stderr = self - - level = sugar.env.get_logging_level() - if level == 'debug': - logging.basicConfig(level=logging.DEBUG, - format='%(levelname)s %(message)s') - - def write(self, s): - self._logger.log(self._application, s, ignore_reply=True) - - def emit(self, record): - pass - - def flush(self): - pass diff --git a/sugar/logger.py b/sugar/logger.py new file mode 100644 index 0000000..54cb15b --- /dev/null +++ b/sugar/logger.py @@ -0,0 +1,34 @@ +import logging + +import dbus +import gobject + +class Handler(logging.Handler): + def __init__(self, shell, console_id): + logging.Handler.__init__(self) + + self._console_id = console_id + self._shell = shell + self._messages = [] + + def _log(self): + for message in self._messages: + # FIXME use a single dbus call + self._shell.log(self._console_id, message) + return False + + def emit(self, record): + self._messages.append(record.msg) + if len(self._messages) == 1: + gobject.idle_add(self._log) + +def start(console_id, shell = None): + root_logger = logging.getLogger('') + root_logger.setLevel(logging.DEBUG) + + if shell == None: + bus = dbus.SessionBus() + proxy_obj = bus.get_object('com.redhat.Sugar.Shell', '/com/redhat/Sugar/Shell') + shell = dbus.Interface(proxy_obj, 'com.redhat.Sugar.Shell') + + root_logger.addHandler(Handler(shell, console_id)) -- cgit v0.9.1