Einfache "Log" Datei erstellen

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von picoflop.

    Einfache "Log" Datei erstellen

    Hi, ich möchte eine einfache Log-Datei erstellen. Diese soll aber keine Fehlermeldungen enthalten, sondern anderen Kram, den ich während der Laufzeit reinschreiben möchte.
    Der Haken an der Sache ist der, dass ich möchte das der aktuelle Text erhalten bleibt, es soll also einfach nur eine Zeile hinzugefügt werden.
    Sprich:

    AddLine(".\log.txt", "Irgendeine Zeile")

    Das ich später wenn ich log.txt öffne folgendes lese:

    IrgendeineZeile
    Noch eine Zeile
    Und so weiter

    Wie bekomm ich das hin, dass er einfach nur eine Zeile dran hängt?
    Sieh Dir den System.IO-Namespace an.

    VB.NET-Quellcode

    1. Append = True '- Information wird angehängt.
    2. Using fs = new IO.StreamWriter(Pfad, Append)
    3. fs.WriteLine(Text)
    4. End Using
    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!
    Müsste ich das Using bei jeder Funktion schreiben, oder kann ich das global benutzen und im Code dann nur noch "fs.WriteLine(Text)" schreiben?

    //edit: Hab gesehen es geht auch einfacher:

    My.Computer.FileSystem.WriteAllText("C://testfile.txt", "Text", True)

    Dank dir trotzdem =)

    //edit2: Wobei er da einfach nur den Text dran hängt und keine neue Zeile anfängt, das kann man aber ändern in dem man vor dem "Text" ein "vbCrLf & " einfügt.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Hatschi“ ()

    Meiner Meinung nach schon. Meine Begründung: Wer das ganze dann auch auf Linux lauffähig machen will, hat den Namensraum nicht.
    Wenn man jetzt auf eine andere .NET-Sprache umsteigt, gibt es ,auch hier, keinen My.-Namespace.

    Hier ein Thread, in dem du das verfolgen kannst: My Namespace warum nicht?

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    3. My.Application.Log.DefaultFileLogWriter.BaseFileName = System.IO.Path.Combine(My.Computer.FileSystem.SpecialDirectories.CurrentUserApplicationData, "dummy")
    4. My.Application.Log.DefaultFileLogWriter.AutoFlush = True
    5. End Sub
    6. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    7. My.Application.Log.WriteEntry("Just entered the button click", TraceEventType.Information)
    8. Try
    9. Throw New System.ArgumentException("foo")
    10. Catch ex As Exception
    11. My.Application.Log.WriteException(ex, TraceEventType.Critical, "nothing to say")
    12. End Try
    13. End Sub
    14. End Class