public static void RegisterIntegration(Integration integration) { // register integration var integrationLoggingLevel = integration.LoggingLevel == LoggingLevel.InheritFromParent ? ServiceLoggingLevel : integration.LoggingLevel; var integrationToRegister = new RegisteredIntegration(integration, integrationLoggingLevel); if (registeredIntegrations.ContainsKey(integration.Id)) { registeredIntegrations[integration.Id] = integrationToRegister; } else { registeredIntegrations.Add(integration.Id, integrationToRegister); } // register jobs foreach (var job in integration.Jobs) { var jobLoggingLevel = job.LoggingLevel == LoggingLevel.InheritFromParent ? integrationLoggingLevel : job.LoggingLevel; var jobToRegister = new RegisteredJob(job, jobLoggingLevel); if (registeredIntegrations[integration.Id].RegisteredJobs.ContainsKey(job.Id)) { registeredIntegrations[integration.Id].RegisteredJobs[job.Id] = jobToRegister; } else { registeredIntegrations[integration.Id].RegisteredJobs.Add(job.Id, jobToRegister); } } //DeleteExpiredIntegrationHistoryForAllLoggers(integrationToRegister); }
private static void DeleteExpiredIntegrationHistoryForAllLoggers(RegisteredIntegration registeredIntegration) { foreach (var registeredLogger in registeredLoggers) { try { DeleteExpiredIntegrationHistory(registeredLogger, registeredIntegration); } catch (Exception ex) { WriteExceptionToLog(ex); } } }
private static void DeleteExpiredIntegrationHistory(RegisteredLogger registeredLogger, RegisteredIntegration registeredIntegration) { try { if (registeredLogger.Logger is DatabaseLogger && registeredIntegration.Integration.DaysOfDatabaseLoggingHistory >= 0) { registeredLogger.Logger.DeleteIntegrationHistory(registeredIntegration.Integration.Id, registeredIntegration.Integration.DaysOfDatabaseLoggingHistory); } else if (registeredLogger.Logger is TextFileLogger && registeredIntegration.Integration.DaysOfFileLoggingHistory >= 0) { registeredLogger.Logger.DeleteIntegrationHistory(registeredIntegration.Integration.Id, registeredIntegration.Integration.DaysOfFileLoggingHistory); } else { throw new NotImplementedException(string.Format("Logger of type '{0}' is not implemented.", registeredLogger.Logger.GetType().Name)); } } catch (Exception ex) { WriteExceptionToLog(ex); } }