Source code for lakesuperior.messaging.messenger

import logging

from lakesuperior.messaging import formatters, handlers

logger = logging.getLogger(__name__)
messenger = logging.getLogger('_messenger')


[docs]class Messenger: """ Very simple message sender using the standard Python logging facility. """ def __init__(self, config): """ Set up the messenger. :param dict config: Messenger configuration. """ def msg_routes(): for route in config['routes']: handler_cls = getattr(handlers, route['handler']) messenger.addHandler(handler_cls(route)) messenger.setLevel(logging.INFO) formatter = getattr(formatters, route['formatter']) yield messenger, formatter self.config = config self.msg_routes = tuple(r for r in msg_routes()) logger.info('Active messaging routes: {}'.format(self.msg_routes))
[docs] def send(self, *args, **kwargs): """Send one or more external messages.""" for msg, fn in self.msg_routes: msg.info(fn(*args, **kwargs))