def start(options, parser): # Perform common option checks commonOptionsCheck(options, parser) # Setup the loggers fileHandler = setupLogging(options) # Start daemon? if options.daemon: # Make sure the PID file will be created without problems pidDir = getDfmsPidDir() createDirIfMissing(pidDir) pidfile = os.path.join(pidDir, "dfms%s.pid" % (options.dmAcronym)) with daemon.DaemonContext(pidfile=PIDLockFile(pidfile, 1), files_preserve=[fileHandler.stream]): launchServer(options) # Stop daemon? elif options.stop: pidDir = getDfmsPidDir() pidfile = os.path.join(pidDir, "dfms%s.pid" % (options.dmAcronym)) pid = PIDLockFile(pidfile).read_pid() if pid is None: sys.stderr.write( 'Cannot read PID file, is there an instance running?\n') else: os.kill(pid, signal.SIGTERM) # Start directly else: launchServer(options)
def start(options, parser): # Perform common option checks commonOptionsCheck(options, parser) # Setup the loggers fileHandler = setupLogging(options) # Start daemon? if options.daemon: # Make sure the PID file will be created without problems pidDir = getDfmsPidDir() createDirIfMissing(pidDir) pidfile = os.path.join(pidDir, "dfms%s.pid" % (options.dmAcronym)) with daemon.DaemonContext(pidfile=PIDLockFile(pidfile, 1), files_preserve=[fileHandler.stream]): launchServer(options) # Stop daemon? elif options.stop: pidDir = getDfmsPidDir() pidfile = os.path.join(pidDir, "dfms%s.pid" % (options.dmAcronym)) pid = PIDLockFile(pidfile).read_pid() if pid is None: sys.stderr.write('Cannot read PID file, is there an instance running?\n') else: os.kill(pid, signal.SIGTERM) # Start directly else: launchServer(options)
def setupLogging(opts): if logging.root.handlers: # Mmmm, somebody already did some logging, it shouldn't have been us # Let's reset the root handlers for h in logging.root.handlers[:]: logging.root.removeHandler(h) pass levels = [ logging.NOTSET, logging.DEBUG, logging.INFO, logging.WARNING, logging.ERROR, logging.CRITICAL ] # Default is WARNING lidx = 3 if opts.verbose: lidx -= min((opts.verbose, 3)) elif opts.quiet: lidx += min((opts.quiet, 2)) level = levels[lidx] # Let's configure logging now # Daemons don't output stuff to the stdout fmt = logging.Formatter("%(asctime)-15s [%(levelname)5.5s] [%(threadName)15.15s] %(name)s#%(funcName)s:%(lineno)s %(message)s") fmt.converter = time.gmtime if not opts.daemon: streamHdlr = logging.StreamHandler(sys.stdout) streamHdlr.setFormatter(fmt) logging.root.addHandler(streamHdlr) # This is the logfile we'll use from now on logdir = opts.logdir createDirIfMissing(logdir) logfile = os.path.join(logdir, "dfms%s.log" % (opts.dmAcronym)) fileHandler = logging.FileHandler(logfile) fileHandler.setFormatter(fmt) logging.root.addHandler(fileHandler) # Per-package/module specific levels logging.root.setLevel(level) logging.getLogger("dfms").setLevel(level) logging.getLogger("tornado").setLevel(logging.WARN) logging.getLogger("luigi-interface").setLevel(logging.WARN) return fileHandler
def setupLogging(opts): if logging.root.handlers: # Mmmm, somebody already did some logging, it shouldn't have been us # Let's reset the root handlers for h in logging.root.handlers[:]: logging.root.removeHandler(h) pass levels = [ logging.NOTSET, logging.DEBUG, logging.INFO, logging.WARNING, logging.ERROR, logging.CRITICAL ] # Default is WARNING lidx = 3 if opts.verbose: lidx -= min((opts.verbose, 3)) elif opts.quiet: lidx += min((opts.quiet, 2)) level = levels[lidx] # Let's configure logging now # Daemons don't output stuff to the stdout fmt = logging.Formatter( "%(asctime)-15s [%(levelname)5.5s] [%(threadName)15.15s] %(name)s#%(funcName)s:%(lineno)s %(message)s" ) fmt.converter = time.gmtime if not opts.daemon: streamHdlr = logging.StreamHandler(sys.stdout) streamHdlr.setFormatter(fmt) logging.root.addHandler(streamHdlr) # This is the logfile we'll use from now on logdir = opts.logdir createDirIfMissing(logdir) logfile = os.path.join(logdir, "dfms%s.log" % (opts.dmAcronym)) fileHandler = logging.FileHandler(logfile) fileHandler.setFormatter(fmt) logging.root.addHandler(fileHandler) # Per-package/module specific levels logging.root.setLevel(level) logging.getLogger("dfms").setLevel(level) logging.getLogger("tornado").setLevel(logging.WARN) logging.getLogger("luigi-interface").setLevel(logging.WARN) logging.getLogger("zerorpc").setLevel(logging.WARN) return fileHandler