160 lines
6.3 KiB
VB.net
160 lines
6.3 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
|
|
'Create the file.
|
|
Dim fs As FileStream = New FileStream(LogFilename, FileMode.OpenOrCreate, FileAccess.Write)
|
|
If fs.CanWrite = False Then
|
|
LogEscalation_Error("The Logfile can not be written - Check read/write")
|
|
End If
|
|
fs.Close()
|
|
Return False
|
|
Catch ex As Exception
|
|
LogEscalation_Error("The Logfile could not be created - Error: " & ex.Message)
|
|
Return False
|
|
End Try
|
|
'Alles Ok
|
|
log_string = ""
|
|
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 = Now.ToString
|
|
If log_string <> "" Then
|
|
log_string &= vbNewLine
|
|
End If
|
|
'Präfixe schreiben
|
|
If _error = True And Funktion <> "" Then
|
|
msg = " >> Error in function '" & Funktion & "'" & vbNewLine & "errormessage: "
|
|
ElseIf _error = True Then
|
|
msg = " >> Unexpected error(2):" & vbNewLine & "errormessage: "
|
|
End If
|
|
'Präfix und Meldung zusammenstellen
|
|
If text <> "" Then
|
|
msg &= text
|
|
log_string &= msg
|
|
End If
|
|
|
|
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 = Now.ToString & " >> Achtung Fehler in Funktion '" & Funktion & "'" & vbNewLine & "Fehlermeldung: "
|
|
Else
|
|
msg = Now.ToString & " >> Unexpected error(1):" & vbNewLine & "errormessage: "
|
|
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 My.Settings.LOG_ERRORS_ONLY = False Then
|
|
If log_string <> "" Then
|
|
log_string &= vbNewLine
|
|
End If
|
|
log_string &= Now.ToString & " >> " & 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
|
|
If log_string <> String.Empty Then
|
|
SetSpeicherort()
|
|
'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()
|
|
|
|
'Den Meldungsstring wieder leeren
|
|
log_string = ""
|
|
End If
|
|
|
|
Catch ex As Exception
|
|
LogEscalation_Error("Unexpected Error in WriteLog - Error: " & ex.Message)
|
|
End Try
|
|
End Sub
|
|
End Class
|