Я перебираю файл журнала и мне нужно обновить значения словаря с помощью соответствия регулярному выражению внутри группы. когда я пытаюсь использовать error_msg 1 «Я получаю IndexError: список индексов выходит за пределы диапазона».
Вот примеры строк из файла системного журнала, которым я соответствую =
Май 27 11:45:40 ubuntu.local ticky: ИНФОРМАЦИЯ: Создан тикет [# 1234] (имя пользователя)
24 мая 11:44:12 ubuntu.local ticky: ОШИБКА: время ожидания при получении информации [# 34504] (имя пользователя)
24 мая 11:44:12 ubuntu.local ticky: ОШИБКА: не удалось подключиться к базе данных [# 44514] (имя пользователя)
Есть еще один словарь, "per_user", это работает правильно и увеличивает счетчики «INFO» и «ERROR» для каждого пользователя.
error = {}
per_user = {}
with open('syslog.log', 'r') as file: #opening the syslog file
for line in file.readlines():
pattern1 = r"ticky: INFO: ([\w ]*) " #info message
pattern2 = r"ticky: ERROR: ([\w ]*) " #error message
pattern3 = r"(\([\w]*\))$" #username
info_msg = re.findall(pattern1, line)
error_msg = re.findall(pattern2, line)
user = re.findall(pattern3, line)
for x in user:
x = x.strip('()')
if x not in per_user:
per_user[x] = {'INFO':0,'ERROR':0}
if info_msg is not None:
per_user[x]['INFO'] += 1
if error_msg is not None:
per_user[x]['ERROR'] += 1
if error_msg is not None:
for errors in error_msg:
if errors not in error:
error[errors] = 0
error[errors] += 1
file.close()
Почему мой словарь ошибок не добавляет ключи для error_msg 1 и увеличивает счетчик каждого сообщения?
Это примеры таблиц, для которых мои словари будут заполняться ссылка.
![enter image description here](https://i.stack.imgur.com/cqzLI.png)
![enter image description here](https://i.stack.imgur.com/cmdX4.png)