from propLoader import propLoader import filetail import sys,socket,time def genSchema(propfile,schemafile): props = propLoader() props.load(open(propFile)) props.makeLookup() props.generateSchema(outFile) sys.exit(1) def logtoFile(props,infile): t = filetail.Tail(infile) while True: line = t.nextline() print props.translateLine(line) def logtoSocket(props,infile,host,port): s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.settimeout(0.2) print "Connecting to %s:%s" % (host,port) while 1: try: s.connect( (host,int(port)) ) break except: print "failed to connect" time.sleep(0.1) print s.getpeername() print s.getsockname() t = filetail.Tail(infile) while True: time.sleep(0.5) line = t.nextline() data = props.translateLine(line) if data != None: datasize = len(data); if (datasize < 100): datastr = "00%s" % datasize elif (datasize < 1000): datastr = "0%s" % datasize else: datastr = "String too long - truncated" tosend = "%s%s" % (datastr,data) a = s.send(tosend) print "%s from sending %s" % (a,tosend) else: print "Not sending:" , data s.close() def tailFile(propFile,infile): props = propLoader() props.load(open(propFile)) props.makeLookup() host = props.getCayugaHost() port = props.getCayugaPort() if host==None: logtoFile(props,infile) else: logtoSocket(props,infile,host,port) if __name__=='__main__': action = sys.argv[1] if action == "xml": propFile = sys.argv[2] outFile = sys.argv[3] genSchema(propFile,outFile) sys.exit(1) elif action == "tail": propFile = sys.argv[2] inFile = sys.argv[3] tailFile(propFile,inFile) sys.exit(1)