Start und Endzeitpunkt des Programms im Log anzeigen

  • VB.NET

Es gibt 27 Antworten in diesem Thema. Der letzte Beitrag () ist von RushDen.

    Start und Endzeitpunkt des Programms im Log anzeigen

    Guten Tag,

    ich bin neu hier.
    Ich habe ein VB.Net geschrieben, das sich mit einer Datenbank verbindet und dort Daten vergleicht mit einem Verzeichnis. Die fehlenden Daten im Verzeichnis werden anschließend in einem Logfile ausgegeben. Ich möchte gerne dass in der 1. Zeile des Logs das aktuelle Datum inkl. Uhrzeit steht und an der letzten Zeile ebenfalls, wenn möglich auch wie lange der Vorgang denn gedauert hat.


    Visual Basic Quellcode

    VB.NET-Quellcode

    1. Sub Main()
    2. Dim sSQL As String
    3. Dim objConn As New OleDb.OleDbConnection
    4. Dim objDataAdapter As OleDb.OleDbDataAdapter
    5. Dim objDS As New DataSet("WerbetraegerSeitenBilder")
    6. Dim objTable As DataTable
    7. objTable = objDS.Tables("WerbetraegerSeitenBilder")
    8. Dim i As Integer
    9. Dim objRow As DataRow
    10. Dim sFileNameWithPath As String
    11. Dim strAppIniFile As String
    12. Dim Appini As IniReader
    13. Dim sSubstring As String
    14. Dim sUnterVerzeichnis As String
    15. strAppIniFile = My.Application.Info.DirectoryPath + "" + My.Application.Info.AssemblyName + ".ini"
    16. Appini = New IniReader(strAppIniFile)
    17. sSQL = Appini.ReadString("DATABASE", "Filter", "") '
    18. Try
    19. objConn.ConnectionString = Appini.ReadString("DATABASE", "DBConnectionSTATIV", "")
    20. objConn.Open()
    21. Catch myException As System.Exception
    22. Console.WriteLine(myException.Message)
    23. End Try
    24. If objConn.State = ConnectionState.Open Then
    25. Try
    26. objDataAdapter = New OleDb.OleDbDataAdapter(sSQL, objConn)
    27. objDataAdapter.Fill(objDS, "WerbetraegerSeitenBilder")
    28. objTable = objDS.Tables("WerbetraegerSeitenBilder")
    29. Console.WriteLine("{0} Rows", objDS.Tables("WerbetraegerSeitenBilder").Rows.Count)
    30. For i = 0 To objTable.Rows.Count - 1
    31. objRow = objTable.Rows(i)
    32. sSubstring = objRow.Item("IDWerbetraegerSeitenBilder").ToString
    33. sUnterVerzeichnis = sSubstring.Substring(7, 1)
    34. sFileNameWithPath = "\\XXX" & sUnterVerzeichnis & "" & objRow.Item("YYY").ToString & ".jpg"
    35. Console.WriteLine(If(File.Exists(sFileNameWithPath), "File exists.", "File does not exist."))
    36. My.Computer.FileSystem.WriteAllText("XXX\Log.txt", sFileNameWithPath & vbCrLf, True)
    37. Console.WriteLine(sFileNameWithPath)
    38. Next
    39. objConn.Close()
    40. Catch myException As System.Exception
    41. Console.WriteLine(myException.Message)
    42. End Try
    43. Console.ReadLine()
    44. End If
    45. End Sub

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „theo.d“ ()

    @theo.d:: Willkommen im Forum. :thumbup:
    Sieh Dir mal dies an:

    VB.NET-Quellcode

    1. Dim start = DateTime.Now
    2. ' ...
    3. Dim ende = DateTime.Now
    4. Dim dauer = ende - start
    5. MessageBox.Show(String.Format("{0}{3}{1}{3}{2} sec", start, ende, dauer.TotalSeconds, Environment.NewLine))
    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!

    RodFromGermany schrieb:

    @theo.d: Willkommen im Forum. :thumbup:
    Sieh Dir mal dies an:

    RodFromGermany schrieb:

    Visual Basic Quellcode




    1
    2
    3
    4
    5

    RodFromGermany schrieb:

    Dim start = DateTime.Now
    ' ...
    Dim ende = DateTime.Now
    Dim dauer = ende - start
    MessageBox.Show(String.Format("{0}{3}{1}{3}{2} sec", start, ende, dauer.TotalSeconds, Environment.NewLine))

    System.DateTime.Now gibt ja die aktuelle Zeit an, aber diese wird dann in jede Zeile gepackt vor dem Dateinamen.
    Diese soll aber nur in der 1 und der letzten Zeile erscheinen!

    theo.d schrieb:

    Diese soll aber nur in der 1 und der letzten Zeile erscheinen!
    Dann musst Du sie nur in der 1. und der letzten Zeile davorschreiben.
    Du postest hier im Hauptforum, da wird solch Elementarkram vorausgesetzt. :D
    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!

    theo.d schrieb:

    Meine Frage ist ja, WIE ich das erreichen kann

    Dann füge nur beim Laden und beim Entladen die Zeit hinzu.
    Einfachheitshalber kannst Du die Methoden überladen

    VB.NET-Quellcode

    1. Private Sub AppendLog(message As String, addDateTime As Boolean)
    2. If addDateTime Then message = String.Format("{0} - {1}", Now.ToString, message)
    3. ' Write Logs
    4. End Sub
    5. Private Sub AppendLog(message As String)
    6. Me.AppendLog(message, False)
    7. End Sub

    VB.NET-Quellcode

    1. For i = 0 To objTable.Rows.Count - 1
    2. objRow = objTable.Rows(i)
    3. sSubstring = objRow.Item("IDWerbetraegerSeitenBilder").ToString
    4. sUnterVerzeichnis = sSubstring.Substring(7, 1)
    5. sFileNameWithPath = "\\XXX" & sUnterVerzeichnis & "" & objRow.Item("YYY").ToString & ".jpg"
    6. Console.WriteLine(If(File.Exists(sFileNameWithPath), "File exists.", "File does not exist."))
    7. My.Computer.FileSystem.WriteAllText("XXX\Log.txt",System.DateTime.Now & sFileNameWithPath & vbCrLf, True)
    8. Console.WriteLine(sFileNameWithPath)


    Wie muss es denn jetzt eingesetzt werden, um nur an Zeile 1 und der letzten aufzutauchen?
    Da musst Du in der For-Schleife testen, ob i = 0 oder i = (objTable.Rows.Count - 1) ist.
    Schwenk mal bitte auf den System.IO-Namespace um.
    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!

    theo.d schrieb:

    Und das geht wie?
    Bin kein Entwickler
    Dann lass das den Entwickler machen :rolleyes:

    VB.NET-Quellcode

    1. For i = 0 To objTable.Rows.Count - 1
    2. If (i = 0) OrElse (i = objTable.Rows.Count - 1) Then
    3. ' was tun
    4. End If
    5. ' Stuff
    6. Next
    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!

    Ausgabe in Log nur wenn Datei nicht vorhanden

    Hallo zusammen,

    die Frage mit dem Datum hat sich erledigt, danke für eure Hilfe!

    die Routine gleicht Daten bzw. Fotos zwischen einer Datenbank und einem Verzeichnis ab.
    Momentan wird im Log aber jedes Foto reingeschrieben, egal ob es vorhanden ist oder nicht.
    Was muss ich machen, damit nur Fotos die NICHT im Verzeichnis sind ins Log geschrieben werden?

    Ich schätze mal dass es im unten eingefügten Abschnitt passieren müsste.

    VB.NET-Quellcode

    1. My.Computer.FileSystem.WriteAllText("Q:\Eigene Dateien\Visual Studio 2010\Projects\STATIV_Fotoabgleich\Log.txt", "Start Time: " & System.DateTime.Now & vbCrLf & vbCrLf, True)
    2. For i = 0 To objTable.Rows.Count - 1
    3. objRow = objTable.Rows(i)
    4. sSubstring = objRow.Item("IDWerbetraegerSeitenBilder").ToString
    5. sUnterVerzeichnis = sSubstring.Substring(7, 1)
    6. sFileNameWithPath = "\\fs\PICTURES\DEV\STATIV_BILDER\WerbetraegerSeiten" & "" & sUnterVerzeichnis & "" & objRow.Item("IDWerbetraegerSeitenBilder").ToString & ".jpg"
    7. Console.WriteLine(If(File.Exists(sFileNameWithPath), "File exists.", "File does not exist."))
    8. My.Computer.FileSystem.WriteAllText("Q:\Eigene Dateien\Visual Studio 2010\Projects\STATIV_Fotoabgleich\Log.txt", sFileNameWithPath & vbCrLf, True)
    9. 'Console.WriteLine(sFileNameWithPath)
    10. Next
    11. My.Computer.FileSystem.WriteAllText("Q:\Eigene Dateien\Visual Studio 2010\Projects\STATIV_Fotoabgleich\Log.txt", vbCrLf & "End Time: " & System.DateTime.Now, True)

    theo.d schrieb:

    VB.NET-Quellcode

    1. Console.WriteLine(If(File.Exists(sFileNameWithPath), "File exists.", "File does not exist."))
    Mach da ein "richtiges" If draus, und nur, wenn ja/nein existiert, tust Du was.
    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!