Index: TAOR-rework-bugfixing/TAOR rework/LogBestandTextMapper.vb =================================================================== diff -u -r1596 -r1620 --- TAOR-rework-bugfixing/TAOR rework/LogBestandTextMapper.vb (.../LogBestandTextMapper.vb) (revision 1596) +++ TAOR-rework-bugfixing/TAOR rework/LogBestandTextMapper.vb (.../LogBestandTextMapper.vb) (revision 1620) @@ -1,112 +1,92 @@ Imports System.IO Module LogBestandTextMapper - Const aantalLogs As Integer = 5 - Dim busy As Boolean + Const AantalLogs As Integer = 5 + Dim _busy As Boolean Private _currentLogPath As String = "" - Public ReadOnly Property currentLogPath() As String + Public ReadOnly Property CurrentLogPath() As String Get Return _currentLogPath End Get End Property - - Sub writeToFile(databank As String, logMessage As String, Optional voltooid As Boolean = False) - If Not busy Then - startNewLog() + ''' + ''' Wegschrijven van entry in het logbestand. + ''' + ''' De naam van de databank + ''' Het bericht + ''' Ofdat het stuk code is voltooid + Public Sub WriteToFile(databank As String, logMessage As String, Optional voltooid As Boolean = False) + 'Controleren of er nog geen log bestand was gemaakt. + If Not _busy Then + 'Geen log bestand was reeds aanwezig, aanmaken. + StartNewLog() + 'Bijhouden dat nieuw log bestand is aangemaakt. + _busy = True End If - Try - Dim file As System.IO.StreamWriter - file = My.Computer.FileSystem.OpenTextFileWriter(_currentLogPath, True) - - Dim logText As String = String.Format("{0,-15}{1}{2}", databank, logMessage, If(voltooid, " VOLTOOID!", "")) - file.WriteLine(logText) - - file.Close() + Try + 'Stream writer initialiseren met pad naar het log bestand. Tekst wordt niet overschreven, maar toegevoegd. + Dim streamWriter = My.Computer.FileSystem.OpenTextFileWriter(_currentLogPath, True) + 'De tekst die wordt weggeschreven opbouwen: datum databank naam status bericht. + Dim logText = String.Format("{0,-23}{1,-10}{3,-13}{2}", Now.ToString("yyyy-MM-dd HH:mm:ss"), databank, logMessage, If(voltooid, "VOLTOOID!", "")) + 'Wegschrijven. + streamWriter.WriteLine(logText) + 'De stream writer sluiten. + streamWriter.Close() Catch ex As Exception - Throw New Exception("Log bestand kon niet worden gevuld " & vbNewLine & ex.Message) + Throw New Exception($"Log bestand kon niet worden gevuld.{vbNewLine}{ex.Message}") End Try End Sub - Private Sub startNewLog() + Private Sub StartNewLog() Try - Dim regDate As Date = Now.ToString("yyyy-MM-dd HH:mm:ss") - - Dim file As System.IO.StreamWriter - - _currentLogPath = maakNieuweLogFile() - busy = True - - file = My.Computer.FileSystem.OpenTextFileWriter(_currentLogPath, False) - - file.WriteLine(regDate) - - file.Close() + 'Hoofding opbouwen. + Dim hoofding = String.Format("{0,-23}{1,-10}{3,-13}{2}", "Datum", "Databank", "Bericht", "Status") + 'Nieuw log bestand aanmaken en pad er naartoe opslaan. + _currentLogPath = MaakNieuweLogFile() + 'Streamwriter initialiseren. + Dim streamWriter = My.Computer.FileSystem.OpenTextFileWriter(_currentLogPath, False) + 'Hoofding wegschrijven. + streamWriter.WriteLine(hoofding) + 'Stream sluiten. + streamWriter.Close() Catch ex As Exception - Throw New Exception("Log bestand kon niet worden aangemaakt." & vbNewLine & ex.Message) + Throw New Exception($"Log bestand kon niet worden aangemaakt.{vbNewLine}{ex.Message}") End Try End Sub - Public Function getPathLogFolder() As String - 'opvragen van het path naar het bureaublad - Dim logFolderPath As String = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) - Dim logfolder As String = "TAOR REWORK LOGS" - logFolderPath = Path.Combine(logFolderPath, logfolder) - 'als de folder nog niet bestaat, aanmaken - If (Not System.IO.Directory.Exists(logFolderPath)) Then - System.IO.Directory.CreateDirectory(logFolderPath) - End If - Return logFolderPath - End Function + Public Function GeefPathLaatsteLogFile() As String + 'Variabelen declareren. + Dim bestandsnaam as String = String.Empty + Dim laatsteWijzigingTijdstip As Date - Private _pathLaatsteLogFile As String - Public Function geefPathLaatsteLogFile() As String - If _pathLaatsteLogFile Is Nothing OrElse Not System.IO.File.Exists(_pathLaatsteLogFile) Then - Dim logFolderPath As String = getPathLogFolder() - 'kijken of er niks is misgelopen, max-1 aantal bestanden moeten er zijn plus 1'tje met een dubbel cijfer - controleerEnFixBestanden(logFolderPath) + 'Log map opvragen. + dim pathLogFolder = GetPathLogFolder() + 'Alle bestanden hierin overlopen. + For each fileName in Directory.EnumerateFiles(pathLogFolder) + 'Pad naar bestand opbouwen. + dim filePath = Path.Combine(pathLogFolder, fileName) + 'Tijdstip laatste wijziging. + dim lastChanged = System.IO.File.GetLastWriteTimeUtc(filePath) + 'Controleren of de datum van dit bestand recenter is. + If bestandsnaam is String.Empty OrElse (lastChanged > laatsteWijzigingTijdstip) Then + 'Zo ja, registreer dit bestand. + bestandsnaam = fileName + laatsteWijzigingTijdstip = lastChanged + End If + Next - Dim volledigPadMogelijkeLogFile As String - For teller As Integer = 1 To aantalLogs - volledigPadMogelijkeLogFile = Path.Combine(logFolderPath, "log" & teller & teller & ".txt") - If System.IO.File.Exists(volledigPadMogelijkeLogFile) Then - 'als er nog geen nieuwe log is aangemaakt kunnen we kijken naar de huidige log met 2 cijfers, anders moeten we die ervoor nemen - If busy Then - 'als de huidige log '11' is, moeten we kijken of 'aantalLogs' bestaat - Dim padNaarVorigeLog As String - If teller = 1 Then - padNaarVorigeLog = Path.Combine(logFolderPath, "log" & aantalLogs & ".txt") - Else - padNaarVorigeLog = Path.Combine(logFolderPath, "log" & teller - 1 & ".txt") - End If - If System.IO.File.Exists(padNaarVorigeLog) Then - _pathLaatsteLogFile = padNaarVorigeLog - Return _pathLaatsteLogFile - Else - _pathLaatsteLogFile = "" - Return _pathLaatsteLogFile - End If - End If - _pathLaatsteLogFile = volledigPadMogelijkeLogFile - Return _pathLaatsteLogFile - End If - Next - _pathLaatsteLogFile = "" - Return _pathLaatsteLogFile - End If - Return _pathLaatsteLogFile + Return bestandsnaam End Function - Private Function maakNieuweLogFile() As String - Dim logFolderPath As String = getPathLogFolder() - 'kijken of er niks is misgelopen, max-1 aantal bestanden moeten er zijn plus 1'tje met een dubbel cijfer - controleerEnFixBestanden(logFolderPath) + Private Function MaakNieuweLogFile() As String + Dim logFolderPath As String = GetPathLogFolder() Dim vorigeLogFileAanwezig As Boolean Dim volledigPadVorigeLogFile As String - For teller As Integer = 1 To aantalLogs + For teller As Integer = 1 To AantalLogs volledigPadVorigeLogFile = Path.Combine(logFolderPath, "log" & teller & teller & ".txt") If System.IO.File.Exists(volledigPadVorigeLogFile) Then vorigeLogFileAanwezig = True @@ -127,38 +107,16 @@ Throw New Exception("Er is iets fout gelopen bij het opvragen van het Path voor de log bestanden") End Function - Private Sub controleerEnFixBestanden(strPath As String) - Dim aantalGevonden As Integer = 0 - For teller As Integer = 1 To aantalLogs - Dim volledigPath As String = Path.Combine(strPath, "log" & teller & teller & ".txt") - If System.IO.File.Exists(volledigPath) Then - aantalGevonden += 1 - End If - Next - If aantalGevonden <> 1 Then - fixbestanden(strPath, aantalGevonden) + Public Function GetPathLogFolder() As String + 'Opvragen van het pad naar het bureaublad + Dim logFolderPath As String = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + Dim logfolder As String = "TAOR REWORK LOGS" + logFolderPath = Path.Combine(logFolderPath, logfolder) + 'als de folder nog niet bestaat, aanmaken + If (Not System.IO.Directory.Exists(logFolderPath)) Then + System.IO.Directory.CreateDirectory(logFolderPath) End If - End Sub + Return logFolderPath + End Function - Private Sub fixbestanden(strPath As String, aantalGevonden As Integer) - If aantalGevonden > 1 Then - Dim teller As Integer = 1 - While aantalGevonden > 1 And teller <= aantalLogs - Dim volledigPath As String = Path.Combine(strPath, "log" & teller & teller & ".txt") - If System.IO.File.Exists(volledigPath) Then - My.Computer.FileSystem.RenameFile(volledigPath, "log" & teller & ".txt") - aantalGevonden -= 1 - End If - teller += 1 - End While - Else - 'terug beginnen tellen vanaf 1 - Dim volledigPath As String = Path.Combine(strPath, "log" & 1 & ".txt") - 'als er nog geen enkele log file aanwezig is, moeten we niks doen - If System.IO.File.Exists(volledigPath) Then - My.Computer.FileSystem.DeleteFile(volledigPath) - End If - End If - End Sub - End Module \ No newline at end of file