анализ журнала в Python3 с разницей во времени

#python-3.x #logging #time #difference

#python-3.x #ведение журнала #время #разница

Вопрос:

У меня есть файл с именем info.log

в этом файле полно таких строк :

 10-30-2020 09:20:53;CLUSTER OK; Service cluster; 1 ok, 0 warning, 0 unknown, 0 critical;;;;;;;
10-30-2020 09:20:53;CLUSTER OK; Service cluster; 1 ok, 0 warning, 0 unknown, 0 critical;;;;;;;
10-30-2020 09:20:54;CLUSTER OK; Service cluster; 1 ok, 0 warning, 0 unknown, 0 critical;;;;;;;
10-30-2020 09:20:54;CLUSTER OK; Service cluster; 1 ok, 0 warning, 0 unknown, 0 critical;;;;;;;
10-30-2020 09:20:54;CLUSTER OK; Service cluster; 1 ok, 0 warning, 0 unknown, 0 critical;;;;;;;
10-30-2020 09:20:54;CLUSTER OK; Service cluster; 1 ok, 0 warning, 0 unknown, 0 critical;;;;;;;
10-30-2020 09:20:55;CLUSTER CRITICAL Computer 345; 2 ok, 0 warning, 0 unknown, 0 critical;;;;;;;
10-30-2020 09:20:55;CLUSTER OK; Service cluster; 1 ok, 0 warning, 0 unknown, 0 critical;;;;;;;
10-30-2020 10:20:56;CLUSTER OK Computer 345; 2 ok, 0 warning, 0 unknown, 0 critical;;;;;;;
10-30-2020 09:20:56;CLUSTER OK; Service cluster; 1 ok, 0 warning, 0 unknown, 0 critical;;;;;;;
10-30-2020 09:20:56;CLUSTER OK; Service cluster; 1 ok, 0 warning, 0 unknown, 0 critical;;;;;;;
10-30-2020 09:20:56;CLUSTER OK; Service cluster; 1 ok, 0 warning, 0 unknown, 0 critical;;;;;;;
10-30-2020 09:20:56;CLUSTER OK; Service cluster; 1 ok, 0 warning, 0 unknown, 0 critical;;;;;;;

  

Мне нужно проанализировать только текущий месяц.

Мне нужно определить, когда компьютер становится критическим, а затем ОК, и найти разницу во времени.

Здесь, например, разница между :

10-30-2020 09:20:55 и 10-30-2020 10:20:56

итак, здесь результат равен 1h00,1s.

наконец, мне нужно заполнить файл с текущим временем простоя за месяц следующим образом :

Время простоя компьютера 345: 1 час 001 минута 1 сек (не обязательно указывать в письме час и минуты)

Я попробовал это сейчас :

 logfile = "ref_cluster.log.csv"


def mainloop():
    f = open(logfile, 'r')
    row_list = []
    for row in f:
        if "*" in row:
            row = str(row.strip(";"))
            row_list.append(row)
        else:
            row_list.append(row.split(";"))

    f.close()

    critical_list = []

    for i in row_list:
        if i[1] == "CLUSTER CRITICAL":
            critical_list.append(i)

    print(critical_list)


mainloop()
  

Комментарии:

1. Я бы начал с создания фрейма данных из ваших файловых данных с помощью pandas. Как только у вас есть данные в Dataframe, pandas предлагает несколько методов, которые упростят анализ.

2. Я изменил дату и время в журналах :

3. Вы импортировали журнал в фрейм данных? Как выглядит фрейм данных?

4. Кроме того, теперь вы можете выбирать строки для определенного месяца