From d835accd7d13507342f79851c1c52a1536bc4361 Mon Sep 17 00:00:00 2001 From: Digital Data - Marlon Schreiber Date: Fri, 2 Feb 2018 10:50:25 +0100 Subject: [PATCH] MS Errorhandling eventlogger --- app/DDWDResultHandler/DDWDResultHandler.vb | 50 ++++++++++++------- app/DDWDResultHandler/clsDatatabase.vb | 8 ++- app/DDWDResultHandler/clsDateiverarbeitung.vb | 12 ++++- app/DDWDResultHandler/clsLogger.vb | 11 ++++ 4 files changed, 59 insertions(+), 22 deletions(-) diff --git a/app/DDWDResultHandler/DDWDResultHandler.vb b/app/DDWDResultHandler/DDWDResultHandler.vb index f3f811c..df763f8 100644 --- a/app/DDWDResultHandler/DDWDResultHandler.vb +++ b/app/DDWDResultHandler/DDWDResultHandler.vb @@ -16,27 +16,34 @@ Public Class DDWDResultHandler Public Sub New() MyBase.New() InitializeComponent() - If Not System.Diagnostics.EventLog.SourceExists("Windream Result Handler") Then - System.Diagnostics.EventLog.CreateEventSource("Windream Result Handler", - "DigitalData Log") - End If - 'EventLog1.Source = "Windream Result Handler" - 'EventLog1.Log = "DigitalData Log" End Sub Protected Overrides Sub OnStart(ByVal args() As String) ' Code zum Starten des Dienstes hier einfügen. Diese Methode sollte Vorgänge ' ausführen, damit der Dienst gestartet werden kann. 'EventLog1.WriteEntry("Dienst 'DD windream Result Handler' gestartet") Try - clsLogger.Init(My.Application.Info.DirectoryPath & "\Log", "logResultHandler_") - clsLogger.Add(" ", False) - clsLogger.Add("## WindreamResultHandler gestartet - " & Now & " ## ", False) + If Not System.Diagnostics.EventLog.SourceExists("DDWMResultHandler") Then + System.Diagnostics.EventLog.CreateEventSource("DDWMResultHandlerr", "DigitalData Log") + End If + Catch ex As Exception + EventLog.WriteEntry("DDWMResultHandler", "ERROR in Creating source:" & ex.ToString(), EventLogEntryType.Error) + End Try + Try + Try + clsLogger.Init(My.Application.Info.DirectoryPath & "\Log", "_SERVICEResultHandler") + clsLogger.Add(" ", False) + clsLogger.Add("## WindreamResultHandler gestartet - " & Now & " ## ", False) + Catch ex As Exception + EventLog.WriteEntry("DDWMResultHandler", "ERROR in CREATING-LOG:" & ex.ToString(), EventLogEntryType.Error) + End Try + If My.Settings.SQLSERVER_CS = String.Empty Then clsLogger.Add("Achtung: Es wurde noch kein Datenbank-ConnectionString hinterlegt.", True) Else If clsDatatabase.Init = False Then clsLogger.Add("Achtung: Es konnte keine Verbindung zur Datenbank '" & My.Settings.SQLSERVER_CS & "' hergestellt werden!", True) + clsLogger.WriteLog() Else ' '### Thread für Durchlauf generieren DDWDResultHandler.threadRunner = New BackgroundWorker() @@ -59,6 +66,7 @@ Public Class DDWDResultHandler End If End If Catch ex As Exception + EventLog.WriteEntry("DDWMResultHandler", "Unexpected error in OnStart: " & ex.ToString(), EventLogEntryType.Error) clsLogger.AddError(ex.Message, "OnStart") End Try @@ -69,13 +77,18 @@ Public Class DDWDResultHandler End If End Sub Protected Overrides Sub OnStop() - ' Hier Code zum Ausführen erforderlicher Löschvorgänge zum Beenden des Dienstes einfügen. - 'EventLog1.WriteEntry("Dienst 'DD windream Result Handler' gestoppt") - clsLogger.Add("", False) - clsLogger.Add("## WindreamResultHandler wurde gestoppt - " & Now & " ## ", False) - clsDatatabase.Execute_non_Query("Update TBWMRH_PROFIL SET Running = 1 WHERE GUID = " & _PROFIL_ID) - clsLogger.Add("", False) - clsLogger.WriteLog() + Try + ' Hier Code zum Ausführen erforderlicher Löschvorgänge zum Beenden des Dienstes einfügen. + 'EventLog1.WriteEntry("Dienst 'DD windream Result Handler' gestoppt") + clsLogger.Add("", False) + clsLogger.Add("## WindreamResultHandler wurde gestoppt - " & Now & " ## ", False) + clsDatatabase.Execute_non_Query("Update TBWMRH_PROFIL SET Running = 1 WHERE GUID = " & _PROFIL_ID) + clsLogger.Add("", False) + clsLogger.WriteLog() + Catch ex As Exception + EventLog.WriteEntry("DDWMResultHandler", "Unexpected error in OnStop: " & ex.ToString(), EventLogEntryType.Error) + End Try + End Sub Public Shared Sub RUN_THREAD(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Try @@ -125,7 +138,7 @@ Public Class DDWDResultHandler End If clsDatatabase.Execute_non_Query("UPDATE TBWMRH_KONFIGURATION SET LAST_TICK = GETDATE() WHERE GUID = 1") Else - clsLogger.Add("- clsSQLLite konnte nicht initialisiert werden!", False) + clsLogger.Add("- clsDatabase konnte nicht initialisiert werden!", False) notcompleted = True End If Else @@ -163,7 +176,7 @@ Public Class DDWDResultHandler ' End Try 'End If Catch ex As Exception - clsLogger.AddError(ex.Message, "Thread_Completed") + EventLog.WriteEntry("DDWMResultHandler", "Unexpected error in Thread_Completed: " & ex.ToString(), EventLogEntryType.Error) End Try End Sub Public Shared Function Thread_Abbrechen() @@ -173,6 +186,7 @@ Public Class DDWDResultHandler End If Return True Catch ex As Exception + EventLog.WriteEntry("DDWMResultHandler", "Unexpected error in Thread_Abbrechen: " & ex.ToString(), EventLogEntryType.Error) clsLogger.AddError(ex.Message, "Thread_Abbrechen") Return False End Try diff --git a/app/DDWDResultHandler/clsDatatabase.vb b/app/DDWDResultHandler/clsDatatabase.vb index 37eeb3e..e4d8316 100644 --- a/app/DDWDResultHandler/clsDatatabase.vb +++ b/app/DDWDResultHandler/clsDatatabase.vb @@ -1,6 +1,7 @@ Imports System.Data.SqlClient Imports Oracle.ManagedDataAccess.Client Public Class clsDatatabase + Private Shared MSSQL_inited As Boolean = False Public Shared Function ExecuteonOracleDb(CONSTRING As String, ByVal plsqlcommand As String) Try ' die nötigen Variablen definieren @@ -113,7 +114,7 @@ Public Class clsDatatabase End Function Public Shared Function ExecuteonMSSQL(ConString As String, ByVal sqlcommand As String) Try - + If MSSQL_inited = False Then Return False ' die nötigen Variablen definieren Dim Connection As SqlConnection = Nothing ' Dim ConnectionString As SqlConnectionStringBuilder = Nothing @@ -177,7 +178,6 @@ Public Class clsDatatabase End Function Private Shared connectionString As String - Public Shared Function Init() Try connectionString = My.Settings.SQLSERVER_CS @@ -185,6 +185,7 @@ Public Class clsDatatabase SQLconnect.ConnectionString = connectionString SQLconnect.Open() SQLconnect.Close() + MSSQL_inited = True Return True Catch ex As Exception clsLogger.Add("Error in DatabaseInit: " & ex.Message, True) @@ -196,6 +197,7 @@ Public Class clsDatatabase Public Shared Function Return_Datatable(Select_anweisung As String) Try + If MSSQL_inited = False Then Return Nothing Dim SQLconnect As New SqlClient.SqlConnection Dim SQLcommand As SqlClient.SqlCommand @@ -221,6 +223,7 @@ Public Class clsDatatabase End Try End Function Public Shared Function Execute_non_Query(ExecuteCMD As String) + If MSSQL_inited = False Then Return False Try Dim SQLconnect As New SqlClient.SqlConnection Dim SQLcommand As SqlClient.SqlCommand @@ -248,6 +251,7 @@ Public Class clsDatatabase End Function Public Shared Function Execute_Scalar(cmdscalar As String) + If MSSQL_inited = False Then Return Nothing Dim result Try diff --git a/app/DDWDResultHandler/clsDateiverarbeitung.vb b/app/DDWDResultHandler/clsDateiverarbeitung.vb index aa4cc69..e7a75c2 100644 --- a/app/DDWDResultHandler/clsDateiverarbeitung.vb +++ b/app/DDWDResultHandler/clsDateiverarbeitung.vb @@ -244,6 +244,7 @@ Public Class clsDateiverarbeitung doc.Ivalidfrom = now doc.Ivaliduntil = now.AddDays(30) doc.Pfad = link + doc.Dateiname = WMFile.aName doc.Kategorien = New List(Of BNSDocumentCategory) From { New BNSDocumentCategory With {.Id = GetDocTypeCategory(DOKART)} } @@ -333,7 +334,13 @@ Public Class clsDateiverarbeitung Return False End Try End Function + Private Shared Function REPLACE_CONSTANT(WMFile As WMObject, _String As String) + Try + + Catch ex As Exception + End Try + End Function Private Shared Function REGEX_REPLACE(WMFile As WMObject, _STRING As String) Try ' Regulären Ausdruck zum Auslesen der windream-Indexe definieren @@ -364,10 +371,10 @@ Public Class clsDateiverarbeitung wdIndexwert = wdIndexwert.ToString.TrimStart clsLogger.AddDetailLog("Ausgelesener Indexwert = '" & wdIndexwert & "'") _STRING = _STRING.Replace(reg_element.Value, wdIndexwert.ToString) - clsLogger.AddDetailLog("Namenkonvention (" & i & ") " & _STRING) + clsLogger.AddDetailLog("SQL-String so far (" & i & ") " & _STRING) i += 1 Else - clsLogger.Add(">> Achtung gelesener Wert ist ein Vektorfeld - keine Umbenennung möglich ", False, "clsProfil.Profil_Durchlauf") + clsLogger.Add(">> Achtung gelesener Wert ist ein Vektorfeld - keine Ersetzung möglich ", False, "clsProfil.Profil_Durchlauf") Return Nothing End If End If @@ -391,6 +398,7 @@ Public Class clsDateiverarbeitung Public Primaer As Boolean = False Public Fremsysid As Integer = 1 Public Kategorien As List(Of BNSDocumentCategory) + Public Dateiname As String End Class Public Class BNSDocumentCategory diff --git a/app/DDWDResultHandler/clsLogger.vb b/app/DDWDResultHandler/clsLogger.vb index 9ec6638..43409e4 100644 --- a/app/DDWDResultHandler/clsLogger.vb +++ b/app/DDWDResultHandler/clsLogger.vb @@ -5,6 +5,7 @@ Public Class clsLogger Public Shared LogFilename As String Private Shared logErr_name As String Private Shared log_string As String + Private Shared Inited As Boolean = False Public Shared Function Init(ByVal speicherort As String, ByVal prefix As String) Try 'Den Speicherort festlegen @@ -41,6 +42,7 @@ Public Class clsLogger Return False End Try 'Alles Ok + Inited = True Return True Catch ex As Exception LogEscalation_Error("Unexpected Error in init Logger - Error: " & ex.Message) @@ -74,6 +76,9 @@ Public Class clsLogger 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 = "") + If Inited = False Then + Exit Sub + End If Dim msg As String If log_string <> "" Then log_string &= vbNewLine @@ -89,6 +94,9 @@ Public Class clsLogger log_string &= msg End Sub Public Shared Sub AddError(ByVal error_string As String, Optional ByVal Funktion As String = "") + If Inited = False Then + Exit Sub + End If Try 'Zuerst mal die Details schreiben WriteLog() @@ -120,6 +128,9 @@ Public Class clsLogger End Sub Public Shared Sub AddDetailLog(ByVal text As String) + If Inited = False Then + Exit Sub + End If Try If LOG_ERRORS_ONLY = False Then If log_string <> "" Then