public static void Main(string[] args)
        {
            var configBuilder = new ConfigurationBuilder()
                                .SetBasePath(Directory.GetCurrentDirectory())
                                .AddJsonFile(ConfigFile);

            IConfiguration configuration = configBuilder.Build();

            IJobStatusWebServiceCallServiceConfig auditingPersistenceServiceConfig = new JobStatusWebServiceCallServiceConfig(configuration["jobSchedulerApiEndPoint"]);
            IQueueConfiguration        queueConfiguration              = new JobStatusQueueConfiguration(configuration["queueConnectionString"], configuration["queueName"], 1);
            ISerializationService      serializationService            = new JsonSerializationService();
            IApplicationLoggerSettings applicationLoggerOutputSettings = new ApplicationLoggerSettings
            {
                ApplicationLoggerOutputSettingsCollection = new List <IApplicationLoggerOutputSettings>
                {
                    new MsSqlServerApplicationLoggerOutputSettings
                    {
                        ConnectionString = configuration["logConnectionString"],
                        MinimumLogLevel  = LogLevel.Information
                    },
                    new ConsoleApplicationLoggerOutputSettings
                    {
                        MinimumLogLevel = LogLevel.Information
                    }
                },
                TaskKey            = "Job Fail Status",
                EnableInternalLogs = true,
                JobId           = "Job Fail Status Service",
                MinimumLogLevel = LogLevel.Information
            };
            IExecutionContext executionContext = new ExecutionContext
            {
                JobId   = "Job Fail Status Service",
                TaskKey = "Job Fail Status"
            };
            ILogger           logger           = new SeriLogger(applicationLoggerOutputSettings, executionContext);
            IDateTimeProvider dateTimeProvider = new DateTimeProvider.DateTimeProvider();
            IQueueSubscriptionService <JobContextDto>       queueSubscriptionService        = new QueueSubscriptionService <JobContextDto>(queueConfiguration, serializationService, logger);
            IJobStatusWebServiceCallService <JobContextDto> failedJobsWebServiceCallService = new FailedJobsWebServiceCallService(auditingPersistenceServiceConfig, queueSubscriptionService, serializationService, logger);

            failedJobsWebServiceCallService.Subscribe();

            logger.LogInfo($"Started {executionContext.JobId}!");

            ManualResetEvent oSignalEvent = new ManualResetEvent(false);

            oSignalEvent.WaitOne();
        }
        public static void Main(string[] args)
        {
            var configBuilder = new ConfigurationBuilder()
                                .SetBasePath(Directory.GetCurrentDirectory())
                                .AddJsonFile(ConfigFile);

            IConfiguration configuration = configBuilder.Build();

            IAuditingPersistenceServiceConfig auditingPersistenceServiceConfig = new AudtingPersistenceServiceConfig(configuration["auditConnectionString"]);
            IQueueConfiguration        queueConfiguration              = new AuditQueueConfiguration(configuration["queueConnectionString"], configuration["queueName"], 1);
            ISerializationService      serializationService            = new JsonSerializationService();
            IApplicationLoggerSettings applicationLoggerOutputSettings = new ApplicationLoggerSettings
            {
                ApplicationLoggerOutputSettingsCollection = new List <IApplicationLoggerOutputSettings>
                {
                    new MsSqlServerApplicationLoggerOutputSettings
                    {
                        ConnectionString = configuration["logConnectionString"],
                        MinimumLogLevel  = LogLevel.Information
                    },
                    new ConsoleApplicationLoggerOutputSettings
                    {
                        MinimumLogLevel = LogLevel.Information
                    }
                },
                TaskKey            = "Audit",
                EnableInternalLogs = true,
                JobId           = "Audit Service",
                MinimumLogLevel = LogLevel.Information
            };
            IExecutionContext executionContext = new ExecutionContext
            {
                JobId   = "Audit Service",
                TaskKey = "Audit"
            };
            ILogger logger = new SeriLogger(applicationLoggerOutputSettings, executionContext);
            IQueueSubscriptionService <AuditingDto>   queueSubscriptionService   = new QueueSubscriptionService <AuditingDto>(queueConfiguration, serializationService, logger);
            IAuditingPersistenceService <AuditingDto> auditingPersistenceService = new AuditingPersistenceService <AuditingDto>(auditingPersistenceServiceConfig, queueSubscriptionService, logger);

            auditingPersistenceService.Subscribe();

            logger.LogInfo("Started!");

            ManualResetEvent oSignalEvent = new ManualResetEvent(false);

            oSignalEvent.WaitOne();
        }