Пример #1
0
        public void LoggerErrorTest()
        {
            var config = new ApplicationLoggerSettings();

            config.ApplicationName = "Test";
            config.LoggerOutput    = Enums.LogOutputDestination.Console;

            Assert.NotNull(new SeriLogger(config));
        }
Пример #2
0
        public ILogger CreateLogger(LogLevel logLevel = LogLevel.Verbose)
        {
            DeleteLogs();

            var config = new ApplicationLoggerSettings();

            config.ApplicationName = "Test App";
            config.MinimumLogLevel = logLevel;
            return(new SeriLogger(config));
        }
Пример #3
0
        protected override void Load(ContainerBuilder builder)
        {
            var config = new ApplicationLoggerSettings();

            config.ApplicationName = "Test app";
            //config.ConnectionStringKey = "AuditLoggingConnectionString";
            config.LoggerOutput = ESFA.DC.Logging.Enums.LogOutputDestination.SqlServer;

            builder.RegisterType <SeriLogger>().As <ILogger>()
            .WithParameter(new TypedParameter(typeof(ApplicationLoggerSettings), config));
        }
        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();
        }
Пример #6
0
        public SeriLogger(ApplicationLoggerSettings appConfig)
        {
            _appLoggerSettings = appConfig;
            _seriConfig        = ConfigureSerilog();

            Serilog.Debugging.SelfLog.Enable(msg => Debug.WriteLine(msg));
            Serilog.Debugging.SelfLog.Enable(Console.Error);

            if (appConfig.LoggerOutput == Enums.LogOutputDestination.SqlServer)
            {
                logger = SqlServerLoggerFactory.CreateLogger(_seriConfig, appConfig.ConnectionStringKey, appConfig.LogsTableName);
            }
            else if (appConfig.LoggerOutput == Enums.LogOutputDestination.Console)
            {
                logger = ConsoleLoggerFactory.CreateLogger(_seriConfig);
            }
        }
Пример #7
0
 public SeriLogger(ApplicationLoggerSettings appConfig, ILogEventSink sink)
 {
     //_appLoggerSettings = appConfig;
     _sink  = sink;
     logger = GenericLoggerFactory.CreateLogger(_seriConfig, sink);
 }
        protected override void Load(ContainerBuilder builder)
        {
            builder.RegisterType <JobService>().As <IJobService>().InstancePerLifetimeScope();
            builder.RegisterType <AuthorizeRepository>().As <IAuthorizeRepository>().InstancePerLifetimeScope();
            builder.RegisterType <BespokeHttpClient>().As <IBespokeHttpClient>().InstancePerLifetimeScope();
            builder.RegisterType <ValidationResultsService>().As <IValidationResultsService>().InstancePerLifetimeScope();
            builder.RegisterType <JsonSerializationService>().As <IJsonSerializationService>().InstancePerLifetimeScope();
            builder.RegisterType <JsonSerializationService>().As <ISerializationService>().InstancePerLifetimeScope();
            builder.RegisterType <DateTimeProvider>().As <IDateTimeProvider>().SingleInstance();
            builder.RegisterType <CollectionManagementService>().As <ICollectionManagementService>().InstancePerLifetimeScope();
            builder.RegisterType <StorageService>().As <IStorageService>().WithAttributeFiltering().InstancePerLifetimeScope();
            builder.RegisterType <QueuePublishService <MessageCrossLoadDctToDcftDto> >().As <IQueuePublishService <MessageCrossLoadDctToDcftDto> >().InstancePerLifetimeScope();
            builder.RegisterType <CrossLoadMessageMapper>().InstancePerLifetimeScope();
            builder.RegisterType <ProviderService>().As <IProviderService>().InstancePerLifetimeScope();

            builder.RegisterType <IlrFileNameValidationService>().Keyed <IFileNameValidationService>(EnumJobType.IlrSubmission).WithAttributeFiltering().InstancePerLifetimeScope();
            builder.RegisterType <EsfFileNameValidationService>().Keyed <IFileNameValidationService>(EnumJobType.EsfSubmission).WithAttributeFiltering().InstancePerLifetimeScope();
            builder.RegisterType <EasFileNameValidationService>().Keyed <IFileNameValidationService>(EnumJobType.EasSubmission).WithAttributeFiltering().InstancePerLifetimeScope();

            builder.Register(context =>
            {
                var config = context.ResolveKeyed <IAzureStorageKeyValuePersistenceServiceConfig>(EnumJobType.IlrSubmission);
                return(new AzureStorageKeyValuePersistenceService(config));
            }).Keyed <IStreamableKeyValuePersistenceService>(EnumJobType.IlrSubmission).InstancePerLifetimeScope();

            builder.Register(context =>
            {
                var config = context.ResolveKeyed <IAzureStorageKeyValuePersistenceServiceConfig>(EnumJobType.EsfSubmission);
                return(new AzureStorageKeyValuePersistenceService(config));
            }).Keyed <IStreamableKeyValuePersistenceService>(EnumJobType.EsfSubmission).InstancePerLifetimeScope();

            builder.Register(context =>
            {
                var config = context.ResolveKeyed <IAzureStorageKeyValuePersistenceServiceConfig>(EnumJobType.EasSubmission);
                return(new AzureStorageKeyValuePersistenceService(config));
            }).Keyed <IStreamableKeyValuePersistenceService>(EnumJobType.EasSubmission).InstancePerLifetimeScope();

            builder.Register(context =>
            {
                var config = context.ResolveKeyed <IAzureStorageKeyValuePersistenceServiceConfig>(EnumJobType.IlrSubmission);
                return(new AzureStorageKeyValuePersistenceService(config));
            }).Keyed <IKeyValuePersistenceService>(EnumJobType.IlrSubmission).InstancePerLifetimeScope();

            builder.Register(context =>
            {
                var config = context.ResolveKeyed <IAzureStorageKeyValuePersistenceServiceConfig>(EnumJobType.EsfSubmission);
                return(new AzureStorageKeyValuePersistenceService(config));
            }).Keyed <IKeyValuePersistenceService>(EnumJobType.EsfSubmission).InstancePerLifetimeScope();

            builder.Register(context =>
            {
                var config = context.ResolveKeyed <IAzureStorageKeyValuePersistenceServiceConfig>(EnumJobType.EasSubmission);
                return(new AzureStorageKeyValuePersistenceService(config));
            }).Keyed <IKeyValuePersistenceService>(EnumJobType.EasSubmission).InstancePerLifetimeScope();

            builder.Register(context =>
            {
                var config = new ApplicationLoggerSettings()
                {
                    ApplicationLoggerOutputSettingsCollection = new List <IApplicationLoggerOutputSettings>()
                    {
                        new MsSqlServerApplicationLoggerOutputSettings()
                        {
                            ConnectionString = context.Resolve <ConnectionStrings>().AppLogs
                        }
                    }
                };
                return(new SeriLogger(config, new ExecutionContext()
                {
                    JobId = "1"
                }));
            }).As <ILogger>().InstancePerLifetimeScope();

            builder.Register(context =>
            {
                var logger   = context.Resolve <ILogger>();
                var registry = new PolicyRegistry();
                registry.Add(
                    "HttpRetryPolicy",
                    Policy.Handle <HttpRequestException>()
                    .WaitAndRetryAsync(
                        3,                                                               // number of retries
                        retryAttempt => TimeSpan.FromSeconds(Math.Pow(2, retryAttempt)), // exponential backoff
                        (exception, timeSpan, retryCount, executionContext) =>
                {
                    logger.LogError("Error occured trying to send message to api", exception);
                }));
                return(registry);
            }).As <IReadOnlyPolicyRegistry <string> >()
            .SingleInstance();
        }
Пример #9
0
        public static void Main(string[] args)
        {
            var configBuilder = new ConfigurationBuilder()
                                .SetBasePath(Directory.GetCurrentDirectory())
                                .AddJsonFile(ConfigFile);

            configuration    = configBuilder.Build();
            failJobFrequency = GetConfigItemAsInt(configuration, "numberOfMinutesCheckFail", 60);
            jobAgeToFail     = GetConfigItemAsInt(configuration, "numberOfMinutesBeforeFail", 240);

            IQueueConfiguration queueConfiguration  = new QueueConfiguration(configuration["queueConnectionString"], configuration["queueName"], 1);
            WebApiConfiguration webApiConfiguration = new WebApiConfiguration(configuration["jobSchedulerApiEndPoint"]);

            availableStreamers   = new Dictionary <string, IStreamableKeyValuePersistenceService>();
            mergeZipFilesService = new MergeZipFilesService();
            ISerializationService      serializationService            = new JsonSerializationService();
            IDateTimeProvider          dateTimeProvider                = new DateTimeProvider();
            IApplicationLoggerSettings applicationLoggerOutputSettings = new ApplicationLoggerSettings
            {
                ApplicationLoggerOutputSettingsCollection = new List <IApplicationLoggerOutputSettings>
                {
                    new MsSqlServerApplicationLoggerOutputSettings
                    {
                        ConnectionString = configuration["logConnectionString"],
                        MinimumLogLevel  = LogLevel.Debug
                    },
                    new ConsoleApplicationLoggerOutputSettings
                    {
                        MinimumLogLevel = LogLevel.Debug
                    }
                },
                TaskKey            = "Cross Loader",
                EnableInternalLogs = true,
                JobId           = "Cross Loader Service",
                MinimumLogLevel = LogLevel.Debug
            };
            IExecutionContext executionContext = new ExecutionContext
            {
                JobId   = "Cross Loader Service",
                TaskKey = "Cross Loader"
            };

            logger = new SeriLogger(applicationLoggerOutputSettings, executionContext);

            DbContextOptionsBuilder optionsBuilder = new DbContextOptionsBuilder();

            optionsBuilder.UseSqlServer(
                configuration["jobQueueManagerConnectionString"],
                options => options.EnableRetryOnFailure(3, TimeSpan.FromSeconds(3), new List <int>()));

            crossLoadStatusService    = new CrossLoadStatusService(webApiConfiguration, logger);
            crossLoadActiveJobService = new CrossLoadActiveJobService(optionsBuilder.Options, dateTimeProvider, jobAgeToFail);

            IQueueSubscriptionService <MessageCrossLoadDcftToDctDto> queueSubscriptionService = new QueueSubscriptionService <MessageCrossLoadDcftToDctDto>(queueConfiguration, serializationService, logger);

            logger.LogInfo("Cross Loader service subscribing to queue");
            queueSubscriptionService.Subscribe(Callback, CancellationToken.None);

            logger.LogInfo("Cross Loader service initialising crashed jobs timer");
            timer = new Timer(FindCrashedJobs, null, TimeSpan.FromSeconds(10), TimeSpan.FromMilliseconds(Timeout.Infinite));

            logger.LogInfo("Started Cross Loader Service!");

            ManualResetEvent oSignalEvent = new ManualResetEvent(false);

            oSignalEvent.WaitOne();
        }