Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import xml.etree.ElementTree as ET
- from datetime import datetime,timedelta
- import os
- import contextlib
- import codecs
- import sqlite3
- import traceback
- import re
- BASE_DIR = os.path.abspath(os.getcwd())
- def GetLogList(filenames,cur,lastLogDate,wspath):
- logs = []
- with contextlib.ExitStack() as stack:
- files = [stack.enter_context(codecs.open(fname, "r", "utf_8_sig" )) for fname in filenames]
- for f in files:
- s = f.read()
- tree = ET.XML('<root>' + s + '</root>')
- for element in tree.findall('logString'):
- LogElem = (f.name,element.attrib["logDate"],element.attrib["procName"],element.attrib["startDate"],element.attrib["endDate"],element.find('Request').text,element.find('Response').text,wspath)
- if lastLogDate is not None:
- logDate = datetime.strptime(element.attrib["logDate"], '%d.%m.%Y %H:%M:%S.%f')
- if logDate > lastLogDate:
- logs.append(LogElem)
- else:
- logs.append(LogElem)
- return logs
- def Proccess(conn):
- #wsdir = os.path.join(BASE_DIR,'WebServicelogs')
- wsdirs = GetScanFoldersPath()
- c = conn.cursor()
- filepaths = []
- for wsdir in wsdirs:
- print(wsdir)
- c.execute("Select max(logDate) from buff where wsLogPath=?",(wsdir,))
- templogdate = c.fetchone()[0]
- if templogdate is not None:
- lastlog = datetime.strptime(templogdate, '%d.%m.%Y %H:%M:%S.%f')
- else:
- lastlog = templogdate
- for subdir, dirs, files in os.walk(wsdir):
- for fn in files:
- filepaths.append(os.path.join(subdir, fn))
- temp = GetLogList(filepaths,c,lastlog,wsdir)
- c.executemany('INSERT INTO buff (filePath,logDate,procName,startDate,endDate,request,response,wsLogPath) VALUES (?,?,?,?,?,?,?,?)', temp)
- pass
- def GetScanFoldersPath():
- import json
- # Opening JSON file
- f = open('scanfolders.json','r')
- # returns JSON object as
- # a dictionary
- data = json.load(f)
- # Closing file
- f.close()
- return data
- if __name__ == "__main__":
- FMT = "%H:%M:%S.%f"
- while(True):
- start = datetime.now().strftime(FMT)
- conn = sqlite3.connect(os.path.join(BASE_DIR,"cache.db"))
- try:
- Proccess(conn)
- conn.commit()
- except KeyboardInterrupt:
- conn.rollback()
- break
- except Exception:
- traceback.print_exc()
- conn.rollback()
- finally:
- conn.close()
- end = datetime.now().strftime(FMT)
- tdelta = datetime.strptime(end, FMT) - datetime.strptime(start, FMT)
- if tdelta.days < 0:
- tdelta = timedelta(days=0,seconds=tdelta.seconds, microseconds=tdelta.microseconds)
- print(tdelta)
- pass
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement