| import argparse |
| import sys |
| |
| from .. import handlers, commandline, reader |
| |
| def get_parser(add_help=True): |
| parser = argparse.ArgumentParser("format", |
| description="Format a structured log stream", add_help=add_help) |
| parser.add_argument("--input", action="store", default=None, |
| help="Filename to read from, defaults to stdin") |
| parser.add_argument("--output", action="store", default=None, |
| help="Filename to write to, defaults to stdout") |
| parser.add_argument("format", choices=commandline.log_formatters.keys(), |
| help="Format to use") |
| return parser |
| |
| def main(**kwargs): |
| if kwargs["input"] is None: |
| input_file = sys.stdin |
| else: |
| input_file = open(kwargs["input"]) |
| if kwargs["output"] is None: |
| output_file = sys.stdout |
| else: |
| output_file = open(kwargs["output"], "w") |
| |
| formatter = commandline.log_formatters[kwargs["format"]][0]() |
| |
| handler = handlers.StreamHandler(stream=output_file, |
| formatter=formatter) |
| |
| for data in reader.read(input_file): |
| handler(data) |
| |
| if __name__ == "__main__": |
| parser = get_parser() |
| args = parser.parse_args() |
| kwargs = vars(args) |
| main(**kwargs) |