def test_pubsub(): generator = multiprocessing.Process(target=do_generate_two_records) generator.start() messages = [] tagged_logger.subscribe() for message in tagged_logger.listen(): messages.append(message) if len(messages) == 2: break tagged_logger.unsubscribe() generator.join() msg1, msg2 = messages assert isinstance(msg1, tagged_logger.Log) assert isinstance(msg2, tagged_logger.Log) assert msg1.message == 'foo' assert msg2.message == 'bar'
#!/usr/bin/env python # -*- coding: utf-8 -*- import tagged_logger as logger import argparse options = None def parse_args(): global options parser = argparse.ArgumentParser() parser.add_argument('-p', '--prefix') parser.add_argument('-T', '--time-format', default='[%F %T]') options = parser.parse_args() def do_listen(): logger.configure(prefix=options.prefix) logger.subscribe() for record in logger.listen(): ts = record.ts.strftime(options.time_format) formatted = '{0} {1}'.format(ts, str(record)) print(formatted) if __name__ == '__main__': parse_args() try: do_listen() except KeyboardInterrupt: logger.unsubscribe() print("")