diff --git a/src/sbin/lorax-composer b/src/sbin/lorax-composer index f969eece..fce021d6 100755 --- a/src/sbin/lorax-composer +++ b/src/sbin/lorax-composer @@ -21,6 +21,7 @@ import logging log = logging.getLogger("lorax-composer") program_log = logging.getLogger("program") pylorax_log = logging.getLogger("pylorax") +server_log = logging.getLogger("server") import argparse import os @@ -68,7 +69,7 @@ def setup_logging(logfile): log.addHandler(sh) pylorax_log.addHandler(sh) - fh = logging.FileHandler(filename=logfile, mode="w") + fh = logging.FileHandler(filename=logfile) fh.setLevel(logging.DEBUG) fmt = logging.Formatter("%(asctime)s %(levelname)s %(name)s: %(message)s") fh.setFormatter(fmt) @@ -78,10 +79,27 @@ def setup_logging(logfile): # External program output log program_log.setLevel(logging.DEBUG) logfile = os.path.abspath(os.path.dirname(logfile))+"/program.log" - fh = logging.FileHandler(filename=logfile, mode="w") + fh = logging.FileHandler(filename=logfile) fh.setLevel(logging.DEBUG) program_log.addHandler(fh) + # Server request logging + server_log.setLevel(logging.DEBUG) + logfile = os.path.abspath(os.path.dirname(logfile))+"/server.log" + fh = logging.FileHandler(filename=logfile) + fh.setLevel(logging.DEBUG) + server_log.addHandler(fh) + + +class LogWrapper(object): + """Wrapper for the WSGIServer which only calls write()""" + def __init__(self, log_obj): + self.log = log_obj + + def write(self, msg): + """Log everything as INFO""" + self.log.info(msg.strip()) + if __name__ == '__main__': # parse the arguments @@ -95,6 +113,7 @@ if __name__ == '__main__': if not os.path.isdir(logpath): os.makedirs(logpath) setup_logging(opts.logfile) + log.debug("opts=%s", opts) if not os.path.isdir(opts.RECIPES): log.warn("Creating empty recipe directory at %s", opts.RECIPES) @@ -107,9 +126,8 @@ if __name__ == '__main__': # Import example recipes commit_recipe_directory(server.config["GITLOCK"].repo, "master", opts.RECIPES) - http_server = WSGIServer((opts.host, opts.port), server) + log.info("Starting %s on %s:%d with recipes from %s", VERSION, opts.host, opts.port, opts.RECIPES) + + http_server = WSGIServer((opts.host, opts.port), server, log=LogWrapper(server_log)) # The server writes directly to a file object, so point to our log directory - server_logfile = os.path.abspath(os.path.dirname(opts.logfile))+"/server.log" - server_log = open(server_logfile, "w") - http_server.log = server_log http_server.serve_forever()