def run(self): client = Client.from_config(self.config) tail = RemoteTail() for address in self.args['<address>']: connected = tail.subscribe_service(client.container.lookup(address)) if not connected: print("Couldn't connect to log endpoint of '%s'" % address) if not tail.instances: return 1 level = get_loglevel(self.args['--level']) logger = logging.getLogger('lymph-tail-cli') logger.setLevel(level) console = logging.StreamHandler() console.setLevel(level) console.setFormatter(logging.Formatter('[%(service_type)s][%(identity)s] [%(levelname)s] %(message)s')) logger.addHandler(console) try: for topic, instance, msg in tail: level = getattr(logging, topic) extra = { 'identity': instance.identity[:10], 'service_type': instance.endpoint, } logger.log(level, msg, extra=extra) except KeyboardInterrupt: pass
def test_get_loglevel(self): self.assertEqual(get_loglevel('DEBUG'), logging.DEBUG) self.assertEqual(get_loglevel('debug'), logging.DEBUG) self.assertEqual(get_loglevel('Debug'), logging.DEBUG) self.assertEqual(get_loglevel('INFO'), logging.INFO) self.assertEqual(get_loglevel('info'), logging.INFO) self.assertEqual(get_loglevel('ERROR'), logging.ERROR) self.assertEqual(get_loglevel('error'), logging.ERROR) self.assertEqual(get_loglevel('CRITICAL'), logging.CRITICAL) self.assertEqual(get_loglevel('critical'), logging.CRITICAL) self.assertRaises(ValueError, get_loglevel, 'FOO') self.assertRaises(ValueError, get_loglevel, '*')