Hallo,
ich habe ein kleines Problem. Sonst würde ich wohl auch nicht hier schreiben.
Ich versuche eine LogDatei in eine Datatable zu speichern.
Die Logdatei speichere ich in einen String und formatiere sie in eine csv um. Als Trennzeichen verwende ich #+#. Diese Zeichen kommt in keiner Konstellation vor.
Eine Zeile sieht das zum Beispiel so aus (Etwas anonymisiert!).
Einlesen machen ich dann mit so.
Es funktioniert fast immer. In einigen Zeilen fehlt das letzte Feld. In diesem Feld befindet sich die eigentliche Logmeldung. Im obigen Beispiel wäre das "Loesche Monitor-Report: 2017-03-18_23-45#2017-03-19_23-45"
Es kommt zu keiner Fehlermeldung. Das Feld wird schlichtweg nicht gefüllt.
Mögliche Ansätze wären Sonderzeichen oder die Länge des Strings.
Es handelt sich meist um sehr große Meldungen in denen komplette xmls enthalten sind. Diese können schon mal 63.000 Zeichen lang sein.
Ist das vielleicht zu groß?
Hat jemand vielleicht eine Idee?
ich habe ein kleines Problem. Sonst würde ich wohl auch nicht hier schreiben.
Ich versuche eine LogDatei in eine Datatable zu speichern.
Die Logdatei speichere ich in einen String und formatiere sie in eine csv um. Als Trennzeichen verwende ich #+#. Diese Zeichen kommt in keiner Konstellation vor.
Eine Zeile sieht das zum Beispiel so aus (Etwas anonymisiert!).
Einlesen machen ich dann mit so.
VB.NET-Quellcode
- Public Shared dt As New DataTable("LogDatei")
- Public Shared Function NewLogEinlesen(LogDatei_Pfad As String, ByRef ReturnString As String) As Boolean
- 'Das neue Log mit dem Trennzeichen #+# wird eingelsen und gleich in das Datatable gespeichert
- 'LogDatei_Pfad als Logpfad der Logdatei.
- Try
- Using tfp = New Microsoft.VisualBasic.FileIO.TextFieldParser(LogDatei_Pfad, Encoding.Default)
- tfp.SetDelimiters("#+#")
- Dim fields = tfp.ReadFields
- While fields IsNot Nothing
- dt.Rows.Add(fields(0), fields(1), fields(2), fields(3), fields(4), fields(5), fields(6))
- fields = tfp.ReadFields
- End While
- End Using
- ReturnString = "Ok"
- NewLogEinlesen = True
- Catch e As Exception
- ReturnString = "Fehler in LogZeileZerlegen: " & e.Message
- NewLogEinlesen = False
- End Try
- End Function
Es funktioniert fast immer. In einigen Zeilen fehlt das letzte Feld. In diesem Feld befindet sich die eigentliche Logmeldung. Im obigen Beispiel wäre das "Loesche Monitor-Report: 2017-03-18_23-45#2017-03-19_23-45"
Es kommt zu keiner Fehlermeldung. Das Feld wird schlichtweg nicht gefüllt.
Mögliche Ansätze wären Sonderzeichen oder die Länge des Strings.
Es handelt sich meist um sehr große Meldungen in denen komplette xmls enthalten sind. Diese können schon mal 63.000 Zeichen lang sein.
Ist das vielleicht zu groß?
Hat jemand vielleicht eine Idee?