def set_logging(): try: daemon_conf = conf_reader.read_daemon_conf() log_path = os.path.join(daemon_conf['LOGS_PATH'], 'pycollector.log') log_dir = os.path.split(log_path)[0] if not (log_dir_exists(log_dir) or suggest_log_path_creation(log_path)): exit(-1) logger = logging.getLogger('pycollector') exec("logger.setLevel(logging.%s)" % daemon_conf['LOG_SEVERITY']) rotating = daemon_conf['LOG_ROTATING'] formatter = logging.Formatter(daemon_conf['LOG_FORMATTER']) file_handler = logging.handlers.TimedRotatingFileHandler(log_path, when=rotating) stream_handler = logging.StreamHandler() file_handler.setFormatter(formatter) stream_handler.setFormatter(formatter) logger.addHandler(file_handler) logger.addHandler(stream_handler) return logger except Exception, e: print "Cannot set logging." traceback.print_exc()
def status(): pid_path = conf_reader.read_daemon_conf()['PID_FILE_PATH'] if not is_running()[0]: print "Status: NOT RUNNING." if os.path.exists(pid_path): print "WARNING: Pidfile in %s seems to be obsolete. Please, remove it mannualy." % pid_path sys.exit(-1) sys.exit(0) print "Status: RUNNING." sys.exit(0)
def stop(): running, pids = is_running() if not running: print "Daemon was not running." sys.exit(-1) pid_path = conf_reader.read_daemon_conf()['PID_FILE_PATH'] if not pid_path or not os.path.exists(pid_path): print "WARNING: Seems to be running, but can't get pidfile in %s. Kill it manually." % pid_path sys.exit(-1) try: print "Stopping daemon..." pid = get_pid(pid_path) except Exception, e: print "Can't read pidfile. Daemon not stopped." traceback.print_exc() sys.exit(-1)
def start(collector_clazz, to_daemon=True, enable_server=True, server_port=8442): if is_running()[0]: print "Daemon already running." sys.exit(-1) #starts daemon context if to_daemon: d = daemon.DaemonContext(working_directory=os.getcwd()) d.open() try: #guarantees that libs are available in daemon context sys.path.append(__meta__.PATHS.values()) log = set_logging() log.info(ascii.ascii) log.info("Starting collector...") try: collector = collector_clazz(conf_reader.read_yaml_conf(), conf_reader.read_daemon_conf(), enable_server=enable_server, server_port=server_port) # write pid. write_pid(collector.daemon_conf['PID_FILE_PATH']) # read configurations. collector.prepare_readers_writers() except ConfigurationError, e: log.error(e.msg) sys.exit(-1) log.info("daemon_conf.py settings (missing values are replaced by defaults):\n %s" % pprint.pformat(collector.daemon_conf)) log.info("conf.yaml settings:\n %s" % pprint.pformat(collector.conf)) collector.start()
def log_tail(): file_path = os.path.join(conf_reader.read_daemon_conf()['LOGS_PATH'], 'pycollector.log') try: os.system("tail -42f %s" % file_path) except KeyboardInterrupt: sys.exit(0)
self.server.start() self.log.info('Web started.') except Exception, e: self.log.error("Cannot start server") self.log.error(traceback.format_exc()) sys.exit(-1) def start(self): """Starts the collector""" self.start_pairs() if self.enable_server: self.start_server() self.log.info("Collector started.") def __str__(self): return str(self.__dict__) if __name__ == '__main__': import conf_reader as cr import daemon_util as du du.set_logging() try: conf = cr.read_yaml_conf() daemon_conf = cr.read_daemon_conf() except ConfigurationError, e: print e.msg sys.exit(-1) Collector(conf=conf, daemon_conf=daemon_conf).start()