Beispiel #1
0
def installZMQlogger(port=5800, name=None, clear=True, level=None, logger=None):
    """ Add ZMQ logging handler to a Python logger 
    """

    if clear:
        removeZMQlogger(name)
    ctx = zmq.Context()
    pub = ctx.socket(zmq.PUB)
    pub.setsockopt(zmq.RCVHWM, 10)

    pub.connect('tcp://127.0.0.1:%i' % port)

    if logger is None:
        logger = logging.getLogger()
    if level is not None:
        logger.setLevel(level)
    handler = PUBHandler(pub)
    pid = os.getpid()
    pstr = 'pid %d: ' % pid
    handler.formatters = {
        logging.DEBUG: logging.Formatter(pstr
                                         + "%(levelname)s %(filename)s:%(lineno)d - %(message)s\n"),
        logging.INFO: logging.Formatter(pstr + "%(message)s\n"),
        logging.WARN: logging.Formatter(pstr
                                        + "%(levelname)s %(filename)s:%(lineno)d - %(message)s\n"),
        logging.ERROR: logging.Formatter(pstr
                                         + "%(levelname)s %(filename)s:%(lineno)d - %(message)s - %(exc_info)s\n"),
        logging.CRITICAL: logging.Formatter(pstr +
                                            "%(levelname)s %(filename)s:%(lineno)d - %(message)s\n")}

    logger.addHandler(handler)
    logger.debug('installZMQlogger: handler installed')
    # first message always is discarded
    return logger
Beispiel #2
0
 def run(self):
     context = zmq.Context()
     pub = context.socket(zmq.PUB)
     pub.connect(self.add_log)
     self.log = logging.getLogger()
     self.log.setLevel(logging.DEBUG)
     handler = PUBHandler(pub)
     handler.formatters = formatters
     self.log.addHandler(handler)
     self.log.debug('start_sink')
     
     self.receiver = context.socket(zmq.PULL)
     self.receiver.bind(self.add_rec)
 
     self.controller = context.socket(zmq.PUB)
     self.controller.bind(self.add_pub)
 
     #socket to sinks
     self.main = context.socket(zmq.PUSH)
     self.main.connect(self.add_push)
     
     # Message from main: start
     self.receiver.recv()
 
     #Measure time!
     t_start = time.time()
     results = []
     for task_nbr in range(self.tasks):
         raw_json_data = self.receiver.recv()
         res = json.loads(
             raw_json_data,
             object_hook=MyOptResult.unserialize_object
         )
         results.append(res)
     t_end = time.time()
     t_duration = t_end - t_start
     self.log.debug(
         'Collected {count} results'.format(
         count=len(results),        
         )
     )
     self.log.debug(
         'Total elapsed time: {duration} s'.format(duration=t_duration)
     )
 
     self.controller.send(b'KILL')
     self.handle_results(results)
     time.sleep(1)
     self.main.send(b'0')
Beispiel #3
0
def _start_logger(context):
    global log
    
    controller = context.socket(zmq.PUB)
    controller.bind(ADD_LOG_CONTROLLER)

    l = Logger(ADD_LOGGING, ADD_LOG_LH_CONTROLLER)
    l.start()
    
    time.sleep(2)
    
    pub = context.socket(zmq.PUB)
    pub.connect(ADD_LH_LOGGING)
    log = logging.getLogger('main')
    log.setLevel(logging.DEBUG)
    handler = PUBHandler(pub)
    handler.formatters = formatters
    log.addHandler(handler)
    
    return controller
Beispiel #4
0
import time
import logging
from zmq.log.handlers import PUBHandler
import logjson
from collections import defaultdict

handler = PUBHandler('tcp://127.0.0.1:12345')
handler.setLevel('INFO')
# Override all the level formatters to use JSON
handler.formatters = defaultdict(logjson.JSONFormatter)

logging.basicConfig(level='DEBUG')
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
logger.addHandler(handler)

for i in range(100):
    logger.info('blah')
    time.sleep(1)