diff --git a/scripts/msg_dumper.py b/scripts/msg_dumper.py new file mode 100755 index 0000000000000000000000000000000000000000..457c3214af34d38c794d57c43694b1eb5ab54175 --- /dev/null +++ b/scripts/msg_dumper.py @@ -0,0 +1,77 @@ +#!/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 LogIO(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']) + logio_ip = args['-x'] + logio_port = int(args['-q']) + + pipe = Pipeline() + pipe.attach( + CHPump, + host=ligier_ip, + port=ligier_port, + tags='MSG', + timeout=7 * 60 * 60 * 24, + max_queue=500) + pipe.attach(LogIO, logio_ip=logio_ip, logio_port=logio_port) + pipe.drain() + + +if __name__ == '__main__': + main()