Digital Data - Marlon Schreiber f2e7c6fc6b MS
2017-11-27 14:27:40 +01:00

156 lines
6.0 KiB
VB.net

Imports System.IO
Public Class clsLogger
Private Shared LogPath As String
Private Shared LogFilename As String
Private Shared logErr_name As String
Private Shared log_string As String
Public Shared Function Init(ByVal speicherort As String, ByVal prefix As String)
Try
'Den Speicherort festlegen
SetSpeicherort()
Dim logf_name As String = LogPath & "\" & prefix & System.DateTime.Now.ToString("yyyy_MM_dd") & ".txt"
logErr_name = LogPath & "\" & "ErrorLog_" & System.DateTime.Now.ToString("yyyy_MM_dd") & ".txt"
Dim anz As Integer = 1
Do While File.Exists(logf_name)
Dim info As New FileInfo(logf_name)
Dim length As Long = info.Length
If length > 5000000 Then
logf_name = IO.Path.GetDirectoryName(logf_name)
logf_name = logf_name & "\" & prefix & System.DateTime.Now.ToString("yyyy_MM_dd") & "(" & anz.ToString & ").txt"
anz = anz + 1
Else
Exit Do
End If
Loop
LogFilename = logf_name
Try
'Veruch das Log zu öffnen
Dim fs As FileStream = New FileStream(LogFilename, FileMode.OpenOrCreate, FileAccess.Write)
' --- Stream öffnen
Dim w As StreamWriter = New StreamWriter(fs)
' --- Anfügen am Ende
w.BaseStream.Seek(0, SeekOrigin.End)
' --- Zeilen schreiben
w.WriteLine(" ")
' --- Writer und Stream schließen
w.Close()
fs.Close()
Catch ex As Exception
LogEscalation_Error("The Logfile could not be created - Error: " & ex.Message)
Return False
End Try
'Alles Ok
Return True
Catch ex As Exception
LogEscalation_Error("Unexpected Error in init Logger - Error: " & ex.Message)
Return False
End Try
End Function
Private Shared Sub LogEscalation_Error(msg As String)
Try
'Veruch das Log zu öffnen
Dim fs As FileStream = New FileStream(logErr_name, FileMode.OpenOrCreate, FileAccess.Write)
' --- Stream öffnen
Dim w As StreamWriter = New StreamWriter(fs)
' --- Anfügen am Ende
w.BaseStream.Seek(0, SeekOrigin.End)
' --- Zeilen schreiben
w.WriteLine(msg)
' --- Writer und Stream schließen
w.Close()
fs.Close()
Catch ex As Exception
End Try
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
LogPath = My.Application.Info.DirectoryPath & "\Log\"
End Sub
Public Shared Sub Add(ByVal text As String, ByVal _error As Boolean, Optional ByVal Funktion As String = "")
Dim msg As String
If log_string <> "" Then
log_string &= vbNewLine
End If
'Präfixe schreiben
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
'Präfix und Meldung zusammenstellen
msg &= text
log_string &= msg
End Sub
Public Shared Sub AddError(ByVal error_string As String, Optional ByVal Funktion As String = "")
Try
'Zuerst mal die Details schreiben
WriteLog()
'Nun den eigentlichen Fehler loggen
Dim msg As String
'Präfixe schreiben
If Funktion <> "" Then
msg = ">> Achtung Fehler in Funktion '" & Funktion & "'" & vbNewLine & "Fehlermeldung: "
Else
msg = ">> Achtung Fehler:" & vbNewLine & "Fehlermeldung: "
End If
'Präfix und Meldung zusammenstellen
msg &= error_string
'Veruch das Log zu öffnen
Dim fs As FileStream = New FileStream(LogFilename, FileMode.OpenOrCreate, FileAccess.Write)
' --- Stream öffnen
Dim w As StreamWriter = New StreamWriter(fs)
' --- Anfügen am Ende
w.BaseStream.Seek(0, SeekOrigin.End)
' --- Zeilen schreiben
w.WriteLine(msg)
' --- Writer und Stream schließen
w.Close()
fs.Close()
Catch ex As Exception
LogEscalation_Error("Unexpected Error in AddError - Error: " & ex.Message)
End Try
End Sub
Public Shared Sub AddDetailLog(ByVal text As String)
Try
If clsSQLITE.konf_logerrorsonly = False Then
If log_string <> "" Then
log_string &= vbNewLine
End If
log_string &= ">> " & text
End If
Catch ex As Exception
LogEscalation_Error("Unexpected Error in AddDetailLog - Error: " & ex.Message)
End Try
End Sub
Public Shared Sub WriteLog()
Try
'Veruch das Log zu öffnen
Dim fs As FileStream = New FileStream(LogFilename, FileMode.OpenOrCreate, FileAccess.Write)
' --- Stream öffnen
Dim w As StreamWriter = New StreamWriter(fs)
' --- Anfügen am Ende
w.BaseStream.Seek(0, SeekOrigin.End)
' --- Zeilen schreiben
w.WriteLine(log_string)
' --- Writer und Stream schließen
w.Close()
fs.Close()
SetSpeicherort()
'Den Meldungsstring wieder leeren
log_string = ""
Catch ex As Exception
LogEscalation_Error("Unexpected Error in WriteLog - Error: " & ex.Message)
End Try
End Sub
End Class