Logbuch

  • VB.NET
  • .NET 5–6

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von Typhoon.

    Guten Abend

    Ich stehe wieder vor einem Problem. Ich habe ein "Logbuch"

    VB.NET-Quellcode

    1. My.Application.Log.DefaultFileLogWriter
    das mir einige Log´s schreibt. Funktioniert auch.
    Um das ganze etwas übersichtlicher zu gestallten, möchte ich die .txt in eine DataGridView Importieren.
    Problem: Mein Logbuch.log sieht so aus:

    DefaultSource Information 1 PRG-Feuchtmittelraum wurde gestartet, '20.06.2023 11:18:34'

    das mit folgendem Code erstellt wird.

    VB.NET-Quellcode

    1. Public Class FrmFeuchtraum
    2. Private Sub FrmFeuchtraum_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    3. '###Log-Eintrag starten
    4. My.Application.Log.DefaultFileLogWriter.BaseFileName = IO.Path.Combine(Application.StartupPath, "Logbuch")
    5. My.Application.Log.DefaultFileLogWriter.AutoFlush = True
    6. My.Application.Log.WriteEntry("PRG-Feuchtmittelraum wurde gestartet, '" & Date.Now & "'", TraceEventType.Information, 1)
    7. My.Application.Log.DefaultFileLogWriter.Close()
    8. End Sub
    9. End Class


    Mit diesem Code lese ich die Logbuch.log in die DataGridView

    VB.NET-Quellcode

    1. Public Class FrmLogbuch
    2. Dim table As New DataTable
    3. Private Sub FrmLogbuch_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    4. table.Columns.Add("Standardquelle", GetType(String))
    5. table.Columns.Add("Information", GetType(String))
    6. table.Columns.Add("Type", GetType(String))
    7. table.Columns.Add("Meldung", GetType(String))
    8. table.Columns.Add("Datum", GetType(Date))
    9. table.Columns.Add("Uhrzeit", GetType(TimeSpan))
    10. DataGridViewLogbuch.DataSource = table
    11. Dim lines() As String
    12. Dim vals() As String
    13. lines = File.ReadAllLines("C:\Users\gebha\source\repos\DruckereimanagerBeta\bin\Debug\Logbuch.log")
    14. For i As Integer = 0 To lines.Length - 1 Step +1
    15. vals = lines(i).ToString().Split(CChar("|"))
    16. Dim row(vals.Length - 1) As String
    17. For j As Integer = 0 To vals.Length - 1 Step +1
    18. row(j) = vals(j).Trim()
    19. Next j
    20. table.Rows.Add(row)
    21. Next i
    22. End Sub
    23. End Class


    Problem ist, dass das einlesen nur funktioniert, wenn in den zwischräumen ein "|" ist. Also so:

    DefaultSource | Information | 1 | PRG-Feuchtmittelraum wurde gestartet | 20.06.2023 | 11:17:28

    Git es eine Möglichkeit, die log Datei so zu speichern, das es mir die zwischenräume mit einem "|" füllt?

    Gruß und Danke

    Gebhard
    ich kenne mich mit LogWriters nicht aus, aber das Objekt wird sicherlich einige Properties haben, mit denen du solche Eigenschaften einstellen (konfigurieren) kannst.
    Evtl. musste auch statt des DefaultLogWriiter einen anderen nehmen, den du selbst erstellst und konfigurierst).

    Mehr kannichnich sagen, auf meinem System gibts kein Application.log.DefaultLogWriter (glaub ich - hab nie danach gesucht).
    @Typhoon Wechsle das Format nach XML.
    Mach Dir eine Datenklasse, die alle Deine Elemente als Property hält.
    Leg davon eine List(Of T) an und serialisiere imd deserislisiere die.
    Feddich.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!