import re
import pandas as pd
from datetime import datetime
sessions = {}
with open('final.txt', 'r', encoding='utf-8') as f:
log = f.readlines()
for line in log:
if 'Login successful' in line:
chunks = re.search(r"(.+?) Login successful from user (.+?) .+ session=(.+?) .+", line)
# Возможно придется подкорректировать преобразование времени, если я не угадал с форматом
login_time = datetime.strptime(chunks.group(1), '%I:%M:%S %p')
sessions[chunks.group(3)] = {'login_time': login_time, 'username': chunks.group(2)}
elif 'Closing session' in line:
chunks = re.search(r'(.+?) Closing session.+session=(.+?) .+', line)
logout_time = datetime.strptime(chunks.group(1), '%I:%M:%S %p')
session_id = chunks.group(2)
if session_id not in sessions:
print('Сессия {} закрыта, нет данных о входе'.format(session_id))
else:
login_time = sessions[session_id]['login_time']
username = sessions[session_id]['username']
session_time = logout_time - login_time
print ("Пользователь {} зашел в {} под id {}".format(username, login_time, session_id))
print ("Пользователь {} вышел в {} под id {}".format(username, logout_time, session_id))
d = {'user': [username], 'login': [login_time], 'logout': [logout_time], 'session_id':[session_id]}
df = pd.DataFrame(data=d)
del sessions[session_id]