У меня есть файл журнала, который находится в МБ, и мне нужно извлечь данные только за один конкретный час и исключить оставшиеся данные.
Я пытался добиться этого, копируя каждую строку в файле журнала, используя времяштамп, и я могу извлечь данные, используя это, но когда исключение записывается в файл журнала, я не могу захватить его, так как он не имеет отметки времени во всех строках.Мне это тоже нужно.
Do Until FileIn.AtEndOfStream
strTmp = FileIn.ReadLine
If Len(strTmp) > 0 Then
If (InStr(1, strTmp, Date & " " & LastHour, vbTextCompare) > 0) Then
Fileout.WriteLine strTmp
End If
End If
Loop
Код для построчного извлечения данных с меткой времени
Мне нужно взять данные за 1 час из файла журнала и сохранить их в текстовом документе.
Может кто-нибудь помочь мне с этим, пожалуйста?
пример файла журнала
2019-01-02 00:54:08,886 [117] ERROR [(null)] -
************START***************** Application Exception 2019-01-02 12:54:08 AM*****************************
ERROR CODE :::::: acdefba1-fdfc-4cef-bah5-082bjdbdd9e
System.NullReferenceException: Object reference not set to an instance of an object.
at DynamicModule.ns.Wrapped_IDeliveryModelService_bc245ed8140c4a49aeaf2e2b7c9c7578.UpdateCart(FXCContextctx)
*************END******************* Application Exception 2019-01-02 12:54:08 AM*************************
2019-01-02 00:54:08,965 [95] DEBUG... 2019-01-02 01:01:08,965 [95] DEBUG... 2019-01-02 01:01:08,965 [95] DEBUG...
Sub ExtractLogs(textfilename, logfilename)
'Const ForReading = 1, ForWriting = 2
Dim fso, FileIn, Fileout, strTmp, count, Data
Set fso = CreateObject("Scripting.FileSystemObject")
Set FileIn = fso.OpenTextFile(logfilename, 1)
Set Fileout = fso.CreateTextFile(file_path & textfilename, 2, True)
If Len(Hour(Time)) = 1 Then
Lasthour = "0" & Hour(Time) - 1
If (Len(Lasthour) > 2) Then Lasthour = "23"
Currenthour = "0" & Hour(Time)
Else
Lasthour = Hour(Time) - 1
Currenthour = Hour(Time)
End If
count = 0
Data = ""
Do Until FileIn.AtEndOfStream
strTmp = FileIn.ReadLine
If Len(strTmp) > 0 Then
If (InStr(1, strTmp, Date & " " & Lasthour, vbTextCompare) > 0) Then
'Fileout.writeLine
Fileout.writeLine Data & strTmp
count = 1
Data = ""
ElseIf (InStr(1, strTmp, Date & " " & Currenthour, vbTextCompare) > 0) Then
count = 2
End If
If (InStr(1, strTmp, Date & " " & Lasthour, vbTextCompare) < 1 And count = 1) Then
Data = Data & vbNewLine & strTmp
End If
End If
Loop
FileIn.Close
Fileout.Close
Я изменилкод, подобный этому, и я могу извлечь все данные между двумя метками времени, но размер файла удваивается по сравнению с исходным.что мне делать?