Advertisement
Guest User

Untitled

a guest
Jan 21st, 2021
36
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.85 KB | None | 0 0
  1. import xml.etree.ElementTree as ET
  2. from datetime import datetime,timedelta
  3. import os
  4. import contextlib
  5. import codecs
  6. import sqlite3
  7. import traceback
  8. import re
  9.  
  10. BASE_DIR = os.path.abspath(os.getcwd())
  11.  
  12. def GetLogList(filenames,cur,lastLogDate,wspath):
  13.     logs = []
  14.     with contextlib.ExitStack() as stack:
  15.         files = [stack.enter_context(codecs.open(fname, "r", "utf_8_sig" )) for fname in filenames]
  16.         for f in files:
  17.             s = f.read()
  18.             tree = ET.XML('<root>' + s + '</root>')
  19.             for element in tree.findall('logString'):
  20.                 LogElem = (f.name,element.attrib["logDate"],element.attrib["procName"],element.attrib["startDate"],element.attrib["endDate"],element.find('Request').text,element.find('Response').text,wspath)
  21.                 if lastLogDate is not None:
  22.                     logDate = datetime.strptime(element.attrib["logDate"], '%d.%m.%Y %H:%M:%S.%f')
  23.                     if logDate > lastLogDate:
  24.                         logs.append(LogElem)
  25.                 else:
  26.                     logs.append(LogElem)
  27.     return logs
  28.  
  29. def Proccess(conn):
  30.     #wsdir = os.path.join(BASE_DIR,'WebServicelogs')
  31.     wsdirs = GetScanFoldersPath()
  32.     c = conn.cursor()
  33.     filepaths = []
  34.     for wsdir in wsdirs:
  35.         print(wsdir)
  36.         c.execute("Select max(logDate) from buff where wsLogPath=?",(wsdir,))
  37.         templogdate = c.fetchone()[0]
  38.         if templogdate is not None:
  39.             lastlog = datetime.strptime(templogdate, '%d.%m.%Y %H:%M:%S.%f')
  40.         else:
  41.             lastlog = templogdate
  42.         for subdir, dirs, files in os.walk(wsdir):        
  43.             for fn in files:            
  44.                 filepaths.append(os.path.join(subdir, fn))
  45.         temp = GetLogList(filepaths,c,lastlog,wsdir)
  46.         c.executemany('INSERT INTO buff (filePath,logDate,procName,startDate,endDate,request,response,wsLogPath) VALUES (?,?,?,?,?,?,?,?)', temp)            
  47.     pass
  48.  
  49. def GetScanFoldersPath():
  50.     import json        
  51.     # Opening JSON file
  52.     f = open('scanfolders.json','r')
  53.    
  54.     # returns JSON object as  
  55.     # a dictionary
  56.     data = json.load(f)
  57.    
  58.     # Closing file
  59.     f.close()
  60.     return data
  61.  
  62. if __name__ == "__main__":
  63.     FMT = "%H:%M:%S.%f"
  64.     while(True):
  65.         start = datetime.now().strftime(FMT)
  66.         conn = sqlite3.connect(os.path.join(BASE_DIR,"cache.db"))
  67.         try:
  68.             Proccess(conn)
  69.             conn.commit()
  70.         except KeyboardInterrupt:
  71.             conn.rollback()
  72.             break
  73.         except Exception:
  74.             traceback.print_exc()
  75.             conn.rollback()
  76.         finally:
  77.             conn.close()
  78.         end = datetime.now().strftime(FMT)
  79.         tdelta = datetime.strptime(end, FMT) - datetime.strptime(start, FMT)
  80.         if tdelta.days < 0:
  81.             tdelta = timedelta(days=0,seconds=tdelta.seconds, microseconds=tdelta.microseconds)
  82.         print(tdelta)
  83.     pass
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement