From 551d926b2c8df218d887bdb1f297265482896ad7 Mon Sep 17 00:00:00 2001 From: Konstantin Stepanov Date: Sun, 28 Nov 2010 19:29:13 +0200 Subject: [PATCH] Logger is singleton now, utilize Logger & OptionsParser --- dbuscron.py | 16 ++++++++++++++-- dbuscron/command.py | 4 ++++ dbuscron/logger.py | 7 +++++++ 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/dbuscron.py b/dbuscron.py index a66ff68..7a775e7 100755 --- a/dbuscron.py +++ b/dbuscron.py @@ -15,7 +15,18 @@ import sys if __name__ == '__main__': - daemon = (len(sys.argv) < 2) or (sys.argv[1] != '-f') + from dbuscron import Logger, OptionsParser + + options = OptionsParser('fvc:l:') + daemon = not options.f + + logout = sys.stderr + if options.l: + logout = open(options.l, 'wb') + + log = Logger(__name__, out=logout) + log.level = options.v + Logger.ERROR + if daemon: from dbuscron.daemonize import daemonize daemonize( @@ -27,12 +38,13 @@ if __name__ == '__main__': bus = DbusBus() commands = Commands() - crontab = CrontabParser('/etc/dbuscrontab') + crontab = CrontabParser(options.c or '/etc/dbuscrontab') for rule, cmd in crontab: matcher = DbusRule(**rule) command = Command(cmd) matcher.register() + log.info('%s %s' % (matcher, command)) commands.add(matcher, command) commands.environ = crontab.environ diff --git a/dbuscron/command.py b/dbuscron/command.py index 3713c17..c48df51 100644 --- a/dbuscron/command.py +++ b/dbuscron/command.py @@ -1,6 +1,8 @@ import os from dbuscron.bus import get_dbus_message_type, dbus_to_str +from dbuscron.logger import Logger +log = Logger(__name__) class Command(object): def __init__(self, cmd): @@ -29,6 +31,7 @@ class Command(object): ) env.update(dbus_env) result = os.spawnvpe(os.P_WAIT, self.__file, self.__args, env) + log.info('run %s %s %s %s' % (self.__file, self.__args, dbus_env, result)) return result @property @@ -58,6 +61,7 @@ class Commands(object): def handler(self, bus, message): for rule, command in self.__commands.iteritems(): if rule.match(bus, message): + log.info('matched %s %s' % (rule, command)) command(bus, message, self.__environ) return diff --git a/dbuscron/logger.py b/dbuscron/logger.py index 4a69941..eccbdc0 100644 --- a/dbuscron/logger.py +++ b/dbuscron/logger.py @@ -8,12 +8,19 @@ class Logger(object): __out = None __name = None + __instance = None + DEBUG = 4 INFO = 3 WARNING = 2 ERROR = 1 PANIC = 0 + def __new__(cls, name, out=sys.stderr): + if cls.__instance is None: + cls.__instance = super(Logger, cls).__new__(cls) + return cls.__instance + def __init__(self, name, out=sys.stderr): self.__out = out self.__name = name -- 1.7.9.5