Что нового

Поиск текста в файле, не учитываю предыдущие результаты

SLameN

Новичок
Сообщения
9
Репутация
0
Добрый день! Есть текстовый файл лога, каждые 10 минут туда добавляется информация. Я хотел бы отслеживать ошибки по слову - "error". Все вроде просто, но не пойму, как сделать так, чтобы предыдущие результаты мне не показывал. Скрипт буду запускать каждые 30 минут например в 10:00 нашел строку с error и записал данные в отдельный лог файл. Далее в 10:30 захожу опять в этот же лог:
1) как сделать, чтобы первичную ошибку он не искал, т.к. я уже знаю о ней?
Далее в основной лог может не писать информацию, я бы тоже хотел об этом знать. Через каждые 30 минут я буду узнавать дату изменения файла лога и сравнивать с текущей датой (лог должен быть не позже 30 минут от текущей даты)
2) как сравнить две даты, например: лог файла от 23.09.19 10:25, а я смотрю в 10:30. Разница 5 минут, меня устраивает, но если разница будет 35 минут. Как сравнивать?
Сообщение автоматически объединено:

Объясните словами (какие функции использовать и т.п.) если не сложно, как это реализовать.
 
Последнее редактирование:

Tempo

AutoIT Гуру
Сообщения
616
Репутация
205
1) как сделать, чтобы первичную ошибку он не искал, т.к. я уже знаю о ней?
Как вариант вы можете сохранять позицию указателя после чтения лога
Код:
;~ AutoIt Version: 3.3.14.5
#include <Constants.au3>
#include <Debug.au3>
Global Const $INI_FILE = @ScriptDir & "\Test.ini"
Global Const $LOG_FILE = @ScriptDir & "\Test.log"
For $i = 0 To Random(0, 2, 1)
    FileWriteLine($LOG_FILE, StringFormat("ERROR: %i:%i:%i:%i", @HOUR, @MIN, @SEC, @MSEC)) ;Для примера
Next

Local $hLog = FileOpen($LOG_FILE)
FileSetPos($hLog, IniRead($INI_FILE, "Log", "Pos", 0), $FILE_BEGIN)

Local $sData = FileRead($hLog)
IniWrite($INI_FILE, "Log", "Pos", FileGetPos($hLog))

_DebugArrayDisplay(StringRegExp($sData, "ERROR: .+", $STR_REGEXPARRAYGLOBALMATCH))


2) как сравнить две даты, например: лог файла от 23.09.19 10:25, а я смотрю в 10:30. Разница 5 минут
какие функции использовать
Код:
#include <Date.au3>
FileGetTime ( "filename" [, option = 0 [, format = 0]] )
_NowCalc ( )
_DateDiff ( $sType, $sStartDate, $sEndDate )
 
Последнее редактирование:
Верх