From 31d5c3bc03fd50c076026c4954a1cdb5bcef40b0 Mon Sep 17 00:00:00 2001 From: Guillaume Horel Date: Sun, 24 Apr 2011 11:38:37 -0400 Subject: Plugged the logging facility into the daemon. need more work, think it's broken as it is. --- server/alias.py | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ server/server.py | 58 -------------------------------------------- 2 files changed, 74 insertions(+), 58 deletions(-) create mode 100644 server/alias.py diff --git a/server/alias.py b/server/alias.py new file mode 100644 index 0000000..ae3d191 --- /dev/null +++ b/server/alias.py @@ -0,0 +1,74 @@ +#!/usr/bin/python2 +import logging +from argparse import ArgumentParser +from config import filename, config +import daemon +import daemon.pidfile +from server import ObjectComponent + +if __name__ == '__main__': + commandline = ArgumentParser(description = 'Connect the alias \ + component to a given server') + commandline.add_argument('-p', '--port', + help = 'Port to connect to', + type = int) + commandline.add_argument('-s', '--secret', + help = 'password') + commandline.add_argument('-n', '--name', + help = 'Name the component will have') + commandline.add_argument('-r', '--root', + help = 'Root directory of the user files') + commandline.add_argument('-c', '--config', + help = 'Name of the config file to use') + commandline.add_argument('-d', '--debug', + help = 'Set log level to DEBUG', + action = 'store_const', + const = logging.DEBUG, + default = logging.INFO) + commandline.add_argument('-o', '--host', + help = 'Host to connect to') + commandline.add_argument('-b', '--background', + help = 'run the server in the background', + action = 'store_true') + commandline.add_argument('--logfile', + help = 'location of the log file (default /var/log/${name}.log', + action = 'store_const') + commandline.add_argument('--pidfile', + help = 'location of the pid file (default /var/run/${name}.pid', + action = 'store_const') + + args = commandline.parse_args() + + if args.config is None: + logging.basicConfig(level = args.debug) + config.name = args.name + config.port = args.port + config.secret = args.secret + config.root = args.root + config.host = args.host + config.background = args.background + config.logfile = args.logfile + config.pidfile = args.pidfile + else: + filename = args.config + logging.basicConfig(level = args.debug) + config.read(filename) + + logger = logging.getLogger("DaemonLog") + logger.setLevel(logging.INFO) + formatter = logging.Formatter( +"%(asctime)s - %(name)s - %(levelname)s - %(message)s") + handler = logging.FileHandler(config.logfile) + logger.addHandler(handler) + context = daemon.DaemonContext(detach_process = config.background, + pidfile = daemon.pidfile.TimeoutPIDLockFile(config.pidfile,10), + files_preserve=[handler.stream]) + with context: + component = ObjectComponent(config.name, config.secret, + config.host, config.port, + config.root) + if component.connect(): + logging.info('Component {} connected'.format(component.boundjid)) + component.process(False) + else: + logging.error("Component {} couldn't connect".format(component.boundjid)) \ No newline at end of file diff --git a/server/server.py b/server/server.py index 7b39330..de1ffbe 100755 --- a/server/server.py +++ b/server/server.py @@ -1,14 +1,8 @@ -#!/usr/bin/python2 import logging -from argparse import ArgumentParser - from sleekxmpp.componentxmpp import ComponentXMPP from sleekxmpp.xmlstream.xmlstream import XMLStream from user import UserHandler -from config import filename, config -import daemon -from lockfile.pidlockfile import PIDLockFile class ObjectComponent(ComponentXMPP): @@ -52,56 +46,4 @@ class ObjectComponent(ComponentXMPP): self.send_presence(pto = event["from"].full) -if __name__ == '__main__': - commandline = ArgumentParser(description = 'Connect the alias \ - component to a given server') - commandline.add_argument('-p', '--port', - help = 'Port to connect to', - type = int) - commandline.add_argument('-s', '--secret', - help = 'password') - commandline.add_argument('-n', '--name', - help = 'Name the component will have') - commandline.add_argument('-r', '--root', - help = 'Root directory of the user files') - commandline.add_argument('-c', '--config', - help = 'Name of the config file to use') - commandline.add_argument('-d', '--debug', - help = 'Set log level to DEBUG', - action = 'store_const', - const = logging.DEBUG, - default = logging.INFO) - commandline.add_argument('-o', '--host', - help = 'Host to connect to') - commandline.add_argument('-b', '--background', - help = 'run the server in the background', - action = 'store_true') - - args = commandline.parse_args() - - if args.config is None: - logging.basicConfig(level = args.debug) - config.name = args.name - config.port = args.port - config.secret = args.secret - config.root = args.root - config.host = args.host - config.background = args.background - else: - filename = args.config - logging.basicConfig(level = args.debug) - config.read(filename) - -with daemon.DaemonContext(detach_process = config.background, - pidfile = PIDLockFile('alias.pid'), - working_directory = '.'): - component = ObjectComponent(config.name, config.secret, - config.host, config.port, - config.root) - if component.connect(): - logging.info('Component {} connected'.format(component.boundjid)) - component.process(False) - else : - logging.error("Component {} couldn't connect".format(component.boundjid)) - -- cgit v1.2.3-70-g09d2