217 lines
8.5 KiB
VB.net
217 lines
8.5 KiB
VB.net
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
|