zeitgeist team mailing list archive
-
zeitgeist team
-
Mailing list archive
-
Message #02254
[Merge] lp:~cando/zeitgeist/logging into lp:zeitgeist
Cando has proposed merging lp:~cando/zeitgeist/logging into lp:zeitgeist.
Requested reviews:
Zeitgeist Framework Team (zeitgeist)
Related bugs:
#660440 Using logging output for debugging purposes
https://bugs.launchpad.net/bugs/660440
In this branch i've implemented the logging into a file feature, adding the improvements requested by Seif and Markus in this merge proposal:
https://code.launchpad.net/~ilidrissi.amine/zeitgeist/zeitgeist-logging/+merge/39237
--
https://code.launchpad.net/~cando/zeitgeist/logging/+merge/39780
Your team Zeitgeist Framework Team is requested to review the proposed merge of lp:~cando/zeitgeist/logging into lp:zeitgeist.
=== modified file '_zeitgeist/engine/__init__.py'
--- _zeitgeist/engine/__init__.py 2010-10-19 13:54:12 +0000
+++ _zeitgeist/engine/__init__.py 2010-11-01 20:41:50 +0000
@@ -48,6 +48,7 @@
BaseDirectory.save_data_path("zeitgeist"))
DATABASE_FILE = os.environ.get("ZEITGEIST_DATABASE_PATH",
os.path.join(DATA_PATH, "activity.sqlite"))
+ LOG_PATH = os.path.join(BaseDirectory.xdg_cache_home, "zeitgeist", "daemon.log")
# D-Bus
DBUS_INTERFACE = ZeitgeistDBusInterface.INTERFACE_NAME
=== modified file 'zeitgeist-daemon.py'
--- zeitgeist-daemon.py 2010-10-20 10:24:42 +0000
+++ zeitgeist-daemon.py 2010-11-01 20:41:50 +0000
@@ -25,18 +25,18 @@
import dbus.mainloop.glib
import gettext
import logging
+import logging.handlers
import optparse
import signal
from subprocess import Popen, PIPE
+from xdg import BaseDirectory
# Make sure we can find the private _zeitgeist namespace
from zeitgeist import _config
_config.setup_path()
-# Make sure we can load user extensions, and that they take priority over
-# system level extensions
from _zeitgeist.engine import constants
-sys.path.insert(0, constants.USER_EXTENSION_PATH)
+LOG_PATH = constants.LOG_PATH
gettext.install("zeitgeist", _config.localedir, unicode=True)
@@ -60,6 +60,7 @@
p.wait()
return p.stdout.read().strip() or None
+<<<<<<< TREE
def parse_commandline():
parser = optparse.OptionParser(version = _config.VERSION, option_class=Options)
parser.add_option(
@@ -86,9 +87,50 @@
return parser
def do_shell_completion(parser):
+=======
+class Options(optparse.Option):
+
+ TYPES = optparse.Option.TYPES + ("log_levels",)
+ TYPE_CHECKER = copy(optparse.Option.TYPE_CHECKER)
+ TYPE_CHECKER["log_levels"] = check_loglevel
+
+ log_levels = ('DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL')
+
+parser = optparse.OptionParser(version = _config.VERSION, option_class=Options)
+parser.add_option(
+ "-r", "--replace",
+ action = "store_true", default=False, dest = "replace",
+ help = _("if another Zeitgeist instance is already running, replace it"))
+parser.add_option(
+ "--no-datahub", "--no-passive-loggers",
+ action = "store_false", default=True, dest = "start_datahub",
+ help = _("do not start zeitgeist-datahub automatically"))
+parser.add_option(
+ "--log-level",
+ action = "store", type="log_levels", default="DEBUG", dest="log_level",
+ help = _("how much information should be printed; possible values:") + \
+ " %s" % ', '.join(Options.log_levels))
+parser.add_option(
+ "--quit",
+ action = "store_true", default=False, dest = "quit",
+ help = _("if another Zeitgeist instance is already running, replace it"))
+parser.add_option(
+ "--shell-completion",
+ action = "store_true", default=False, dest = "shell_completion",
+ help = optparse.SUPPRESS_HELP)
+parser.add_option(
+ "--log-file",
+ action = "store", default = LOG_PATH, dest = "log_file",
+ help = _("Specifies where the log file is saved"))
+
+(_config.options, _config.arguments) = parser.parse_args()
+
+if _config.options.shell_completion:
+>>>>>>> MERGE-SOURCE
options = set()
for option in (str(option) for option in parser.option_list):
options.update(option.split("/"))
+<<<<<<< TREE
print " ".join(options)
return 0
@@ -100,6 +142,48 @@
def start_datahub():
DATAHUB = "zeitgeist-datahub"
+=======
+ print ' '.join(options)
+ sys.exit(0)
+
+if _config.options.log_file == LOG_PATH:
+ try:
+ os.mkdir(os.path.join(BaseDirectory.xdg_cache_home, "zeitgeist"))
+ except OSError:
+ pass # directory is already there
+#
+# Logger stuffs
+#
+logging.basicConfig(format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
+ level=getattr(logging, _config.options.log_level))
+
+# create the rotating file handler
+log_handler = logging.handlers.RotatingFileHandler(
+ filename=_config.options.log_file, maxBytes=20971520, backupCount=3)
+
+log_formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
+log_handler.setFormatter(log_formatter)
+
+logging.getLogger().addHandler(log_handler)
+
+
+# Make sure we can load user extensions, and that they take priority over
+# system level extensions
+sys.path.insert(0, constants.USER_EXTENSION_PATH)
+
+from _zeitgeist.engine.remote import RemoteInterface
+
+dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
+mainloop = gobject.MainLoop()
+
+try:
+ interface = RemoteInterface(mainloop = mainloop)
+except RuntimeError, e:
+ logging.error(unicode(e))
+ sys.exit(1)
+
+if _config.options.start_datahub:
+>>>>>>> MERGE-SOURCE
# hide all output of the datahub for now,
# in the future we might want to be more verbose here to make
# debugging easier in case sth. goes wrong with the datahub
Follow ups