messenger.py 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. import logging
  2. from lakesuperior.messaging import formatters, handlers
  3. logger = logging.getLogger(__name__)
  4. messenger = logging.getLogger('_messenger')
  5. class Messenger:
  6. '''
  7. Very simple message sender using the standard Python logging facility.
  8. '''
  9. def __init__(self, config):
  10. '''
  11. Set up the messenger.
  12. @param config (dict) Messenger configuration.
  13. '''
  14. def msg_routes():
  15. for route in config['routes']:
  16. handler_cls = getattr(handlers, route['handler'])
  17. messenger.addHandler(handler_cls(route))
  18. messenger.setLevel(logging.INFO)
  19. formatter = getattr(formatters, route['formatter'])
  20. yield messenger, formatter
  21. self.config = config
  22. self.msg_routes = tuple(r for r in msg_routes())
  23. logger.info('Active messaging routes: {}'.format(self.msg_routes))
  24. def send(self, *args, **kwargs):
  25. '''
  26. Send one or more external messages.
  27. '''
  28. for msg, fn in self.msg_routes:
  29. msg.info(fn(*args, **kwargs))