Imports System.IO Public Class ClassLoggerOld Private Shared DateiSpeicherort As String = Nothing Private Shared DateiPrefix As String = "" Private Shared Datei As IO.File = Nothing Private Shared Dateiname As String = "" Private Shared StreamWriter As IO.StreamWriter = Nothing Private Shared HasInformedAboutError As Boolean = False ' eine Art Konstruktor Public Shared Sub Init(ByVal speicherort As String, Optional ByVal prefix As String = "", Optional ByVal appendFile As Boolean = True) SetSpeicherort() ClassLoggerOld.DateiSpeicherort = speicherort ' wenn ein Prfix gesetzt wurde If Not prefix = "" Then ' initialisiert das Prefix ClassLoggerOld.SetPrefix(prefix) End If Dim str As String = ClassLoggerOld.DateiSpeicherort & "\" & ClassLoggerOld.DateiPrefix & System.DateTime.Now.ToString("yyyy_MM_dd") & ".txt" Dim anz As Integer = 1 Do While File.Exists(str) Dim info As New FileInfo(str) Dim length As Long = info.Length If length > 5000000 Then str = IO.Path.GetDirectoryName(str) str = str & "\" & ClassLoggerOld.DateiPrefix & System.DateTime.Now.ToString("yyyy_MM_dd") & "(" & anz.ToString & ").txt" anz = anz + 1 Else Exit Do End If Loop ClassLoggerOld.Dateiname = str If Not appendFile Then ' der Versuch die Datei zu löschen 'Try ' My.Computer.FileSystem.DeleteFile(ClassNILogger.Dateiname, FileIO.UIOption.OnlyErrorDialogs, FileIO.RecycleOption.DeletePermanently) 'Catch ex As Exception ' ' bei Fehler besteht kein Schreibrecht auf die Datei oder Datei existiert nicht ' ' ALSO: alles Okay soweit 'End Try My.Computer.FileSystem.WriteAllText(ClassLoggerOld.Dateiname, "Neu erstellt - appendfile", False) End If ' testen ob sich die Datei öffnen und beschreiben lässt 'ClassNILogger.CheckIsLogWritable() End Sub ' legt den Speicherort fest Public Shared Sub SetSpeicherort() Dim f As New IO.DirectoryInfo(My.Application.Info.DirectoryPath & "\Log") If f.Exists = False Then IO.Directory.CreateDirectory(My.Application.Info.DirectoryPath & "\Log") End If ClassLoggerOld.DateiSpeicherort = My.Application.Info.DirectoryPath & "\Log\" End Sub ' legt das Prefix für den Dateinamen fest Public Shared Sub SetPrefix(ByVal prefix As String) ClassLoggerOld.DateiPrefix = prefix End Sub Public Shared Sub Add(ByVal text As String, ByVal _error As Boolean, Optional ByVal Funktion As String = "") Try If ClassLoggerOld.OpenFile Then Try Dim msg As String If _error = True And Funktion <> "" Then msg = ">> Achtung Fehler in Funktion '" & Funktion & "'" & vbNewLine & "Fehlermeldung: " ElseIf _error = True Then msg = ">> Achtung Fehler:" & vbNewLine & "Fehlermeldung: " End If msg &= text ClassLoggerOld.StreamWriter.WriteLine(msg) ClassLoggerOld.CloseFile() Catch e As Exception ClassLoggerOld.WriteErrorMessage() End Try Else ClassLoggerOld.WriteErrorMessage() End If Catch ex As Exception End Try End Sub Public Shared Sub AddDetailLog(ByVal text As String) If ClassLoggerOld.OpenFile Then Try If clsSQLITE.konf_logerrorsonly = False Then ClassLoggerOld.StreamWriter.WriteLine(">> " & text) ClassLoggerOld.CloseFile() End If Catch e As Exception ClassLoggerOld.WriteErrorMessage() End Try Else ClassLoggerOld.WriteErrorMessage() End If End Sub ' öffnet eine Datei zum Schreiben Private Shared Function OpenFile() Try ' wenn ein Speicherort festgelegt wurde If Not ClassLoggerOld.DateiSpeicherort = Nothing Then ' den Dateienamen definieren Dim dateiname As String = ClassLoggerOld.Dateiname ' Datei anlegen wenn noch nicht vorhanden My.Computer.FileSystem.WriteAllText(dateiname, String.Empty, True) ' die Datei zum Schreiben öffnen ClassLoggerOld.StreamWriter = New IO.StreamWriter(dateiname, True, System.Text.Encoding.UTF8) End If ' wenn die Datei erfolgreich geöffnet wurde If ClassLoggerOld.StreamWriter IsNot Nothing Then Return True Else Return False End If Catch ex As Exception Return False End Try End Function ' öffnet eine Datei zum Schreiben Private Shared Function OpenFile(ByVal DateiSpeicherort As String, ByVal DateiPrefix As String) Try ' wenn ein Speicherort festgelegt wurde If Not DateiSpeicherort = Nothing And ClassLoggerOld.CheckIsLogWritable() Then ' den Dateienamen definieren Dim dateiname As String = ClassLoggerOld.Dateiname ' Datei anlegen wenn noch nicht vorhanden My.Computer.FileSystem.WriteAllText(dateiname, String.Empty, True) ' die Datei zum Schreiben öffnen ClassLoggerOld.StreamWriter = New IO.StreamWriter(dateiname, True, System.Text.Encoding.UTF8) End If ' wenn die Datei erfolgreich geöffnet wurde If ClassLoggerOld.StreamWriter IsNot Nothing Then Return True Else Return False End If Catch ex As Exception Return False End Try End Function ' schliesst die geöffnete Datei Private Shared Sub CloseFile() ' wenn eine Datei geöffnet ist If ClassLoggerOld.StreamWriter IsNot Nothing Then ' die Datei schliessen ClassLoggerOld.StreamWriter.Close() ClassLoggerOld.StreamWriter = Nothing End If End Sub Public Shared Function CheckIsLogWritable() If ClassLoggerOld.OpenFile Then Try ClassLoggerOld.CloseFile() Catch e As Exception ClassLoggerOld.WriteErrorMessage() Return False End Try Else ClassLoggerOld.WriteErrorMessage() Return False End If Return True End Function Public Shared Function CheckIsLogWritable(ByVal vDateiSpeicherort As String, ByVal vDateiPrefix As String) If ClassLoggerOld.OpenFile(vDateiSpeicherort, vDateiPrefix) Then Try ClassLoggerOld.CloseFile() Catch e As Exception ClassLoggerOld.WriteErrorMessage() Return False End Try Else ClassLoggerOld.WriteErrorMessage() Return False End If Return True End Function Private Shared Sub WriteErrorMessage() If Not ClassLoggerOld.HasInformedAboutError Then Try EventLog.WriteEntry("Windream Result Handler", "Fehler beim Öffnen der Logdatei - Keine Schreibrechte in Verzeichnis??", EventLogEntryType.Warning) Catch ex As Exception End Try 'EventLog1.Source = "Windream Result Handler" 'clsSQLITE.Execute_non_Query("INSERT INTO TBLOG (MODUL,MESSAGE) VALUES ('MAIN','" & "Fehler beim Öffnen der Logdatei - Keine Schreibrechte im Verzeichnis? Es wird keine Logdatei angelegt oder beschrieben.") 'MsgBox("Beim Öffnen der Logdatei ist ein Fehler aufgetreten. Bitte stellen Sie sicher das Sie sowohl über entsprechende Schreibrechte im Verzeichnis, als auch über ausreichend Speicherplatz zum Speichern der Logdatei verfügen." & _ ' vbNewLine & vbNewLine & "Es wird keine Logdatei angelegt oder beschrieben." & vbNewLine & vbNewLine & "Im folgenden werden Sie über Fehler, den Log betreffend nicht weiter informiert, um den Ablauf des Dateiimporters nicht zu stören.", _ ' MsgBoxStyle.Information, "Fehler beim Öffnen der Logdatei") ClassLoggerOld.HasInformedAboutError = True End If End Sub End Class