1234567891011121314151617181920212223242526272829303132333435363738 |
- import logging
- from lakesuperior.messaging import formatters, handlers
- logger = logging.getLogger(__name__)
- messenger = logging.getLogger('_messenger')
- class Messenger:
- '''
- Very simple message sender using the standard Python logging facility.
- '''
- def __init__(self, config):
- '''
- Set up the messenger.
- @param config (dict) 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))
- def send(self, *args, **kwargs):
- '''
- Send one or more external messages.
- '''
- for msg, fn in self.msg_routes:
- msg.info(fn(*args, **kwargs))
|