This tip shows how to read from a log file using a specified format. The following code takes all the logs for the date mentioned in the date control. The log file is in the follwing format, each value separated by
TAB:
Error FormName 10-06-2006 15:43:12 1 ErrorMessageDescription
Imports Microsoft.VisualBasic.FileIO
Public Shared sbMessage As New System.Text.StringBuilder
#Region "Read from Text File"
Private Sub btnTextRead_Click( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnTextRead.Click
Dim arrMessage As New ArrayList
Dim intarrMessageCount As Integer
Try
arrMessage = ProcessUsersFile()
If arrMessage.Count > 0 Then
If arrMessage.Count = 1 Then
If InStr(arrMessage(0), "don't exist") Then
MessageBox.Show(arrMessage(0).ToString, _
"No File", MessageBoxButtons.OK, _
MessageBoxIcon.Information, _
MessageBoxDefaultButton.Button1, _
MessageBoxOptions.DefaultDesktopOnly)
Exit Sub
End If
End If
For intarrMessageCount = 0 To arrMessage.Count - 1
sbMessage.Append(vbCrLf & arrMessage( _
intarrMessageCount) & vbCrLf)
Next
Dim f As New frmShowErrorMessage
f.ShowDialog()
sbMessage.Remove(0, sbMessage.Length - 1)
Else
MessageBox.Show("No logs for the specified Date", _
"No Logs", MessageBoxButtons.OK, _
MessageBoxIcon.Information, _
MessageBoxDefaultButton.Button1, _
MessageBoxOptions.DefaultDesktopOnly)
End If
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Private Function ProcessUsersFile() As ArrayList
Dim currentrow(5) As String
Dim strErrorType, strFormName, strDate, _
strTime, strThreadId, strErrorMessage As String
Dim strFileName As String = _
System.Windows.Forms.Application.StartupPath + _
"\Error Log.txt"
Dim boolFileExists As Boolean
Dim dtEventDate As DateTime
Dim arrMessage As New ArrayList
boolFileExists = My.Computer.FileSystem.FileExists(strFileName)
If boolFileExists = False Then
arrMessage.Add("File " + strFileName + " don't exist")
Return arrMessage
Exit Function
End If
Using MyReader As New _
Microsoft.VisualBasic.FileIO.TextFieldParser(strFileName)
MyReader.TextFieldType = FileIO.FieldType.Delimited
MyReader.SetDelimiters(vbTab)
Dim index As Integer = 0
While Not MyReader.EndOfData
Try
currentrow = MyReader.ReadFields()
strErrorType = currentrow(0)
strFormName = currentrow(1)
strDate = currentrow(2)
strTime = currentrow(3)
strThreadId = currentrow(4)
strErrorMessage = currentrow(5)
dtEventDate = Convert.ToDateTime(strDate)
If dtEventDate = dtEventFromDt.Value Then
arrMessage.Add(strErrorType & vbCrLf & _
strFormName & vbCrLf & strDate & vbCrLf & _
strTime & vbCrLf & strThreadId & vbCrLf & _
strErrorMessage)
End If
Catch ex As Exception
Throw ex
End Try
End While
End Using
Return arrMessage
End Function
#End Region