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

_______________________________________________
Mailing list: https://launchpad.net/~zeitgeist
Post to     : zeitgeist@lists.launchpad.net
Unsubscribe : https://launchpad.net/~zeitgeist
More help   : https://help.launchpad.net/ListHelp

Reply via email to