messenger.py 789 B

1234567891011121314151617181920212223242526272829
  1. import logging
  2. from lakesuperior.messaging import formatters, handlers
  3. messenger = logging.getLogger('_messenger')
  4. class Messenger:
  5. '''
  6. Very simple message sender using the standard Python logging facility.
  7. '''
  8. _msg_routes = []
  9. def __init__(self, config):
  10. for route in config['routes']:
  11. handler_cls = getattr(handlers, route['handler'])
  12. messenger.addHandler(handler_cls(route))
  13. messenger.setLevel(logging.INFO)
  14. formatter = getattr(formatters, route['formatter'])
  15. self._msg_routes.append((messenger, formatter))
  16. def send(self, *args, **kwargs):
  17. '''
  18. Send one or more external messages.
  19. '''
  20. for m, f in self._msg_routes:
  21. m.info(f(*args, **kwargs))