#!/usr/bin/env python # coding=utf-8 # Filename: msg_dumper.py # Author: Tamas Gal <tgal@km3net.de> # vim: ts=4 sw=4 et """ Dumps MSG data from Ligier to a file. Usage: msg_dumper.py [options] msg_dumper.py (-h | --help) Options: -l LIGIER_IP The IP of the ligier [default: 127.0.0.1]. -p LIGIER_PORT The port of the ligier [default: 5553]. -f LOG_FILE Log file to dump the messages [default: MSG.log]. -h --help Show this screen. """ import os import time from km3pipe import Pipeline, Module from km3pipe.io import CHPump class MSGDumper(Module): def configure(self): self.filename = self.get('filename', default='MSG.log') self.fobj = open(os.path.abspath(self.filename)) def process(self, blob): data = blob['CHData'] log_level = 'info' if "ERROR" in data: log_level = 'error' if "WARNING" in data: log_level = 'warning' source = "Other" if " F0" in data: source = "DataFilter" if " Q0" in data: source = "DataQueue" if " W0" in data: source = "DataWriter" self.fobj.write("{} [{}] - {}: {}\n".format(self.filename, source, log_level, data)) return blob def finish(self): self.fobj.close() def main(): from docopt import docopt args = docopt(__doc__) ligier_ip = args['-l'] ligier_port = int(args['-p']) filename = args['-f'] pipe = Pipeline() pipe.attach( CHPump, host=ligier_ip, port=ligier_port, tags='MSG', timeout=7 * 60 * 60 * 24, max_queue=500) pipe.attach(MSGDumper, filename=filename) pipe.drain() if __name__ == '__main__': main()