def __init__(self, component_name, domogik_prefix=True, use_filename=None): ''' Get a logger with provided parameters and set config @param component_name : component name to log @param domogik_prefix : if logger name should be prefixed by 'domogik-' @param use_filename : if set tells the logger to use this file name (otherwise takes 'component_name') ''' if component_name not in self.logger: LEVELS = { 'debug': logging.DEBUG, 'info': logging.INFO, 'warning': logging.WARNING, 'error': logging.ERROR, 'critical': logging.CRITICAL } cfg = Loader() config = cfg.load()[0] if use_filename is None: filename = "{0}/{1}.log".format(config['log_dir_path'], component_name) else: filename = "{0}/{1}.log".format(config['log_dir_path'], use_filename) level = config['log_level'] if level not in LEVELS: raise ValueError("level must be one of 'debug','info','warning',"\ "'error','critical'. Check your config.") if domogik_prefix: my_logger = logging.getLogger('domogik-{0}'.format(component_name)) else: my_logger = logging.getLogger(component_name) # log to file my_logger.propagate = 0 if not my_logger.handlers: hdlr = TimedRotatingFileHandler(filename, \ when='D', interval=1, backupCount=10) formatter = logging.Formatter('%(asctime)s %(name)s %(levelname)s %(message)s') hdlr.setFormatter(formatter) my_logger.addHandler(hdlr) # if loglevvel is set to debug (all log entries also go to stdout) if level == 'debug' and component_name.find('sqlalchemy') == -1: dhdlr = logging.StreamHandler(sys.stdout) dhdlr.setFormatter(formatter) my_logger.addHandler(dhdlr) my_logger.setLevel(LEVELS[level]) self.logger[component_name] = my_logger
def main(): with daemon.DaemonContext( stderr=sys.stderr, stdin=sys.stdin, stdout=sys.stdout): cfg = Loader('mq') my_conf = cfg.load() config = dict(my_conf[1]) context = zmq.Context() if config['ip'].strip() == "*": config['ip'] = get_ip() print(("tcp://{0}:{1}".format(config['ip'], config['req_rep_port']))) broker = MDPBroker(context, "tcp://{0}:{1}".format(config['ip'], config['req_rep_port'])) IOLoop.instance().start() broker.shutdown()