public void LoggerErrorTest() { var config = new ApplicationLoggerSettings(); config.ApplicationName = "Test"; config.LoggerOutput = Enums.LogOutputDestination.Console; Assert.NotNull(new SeriLogger(config)); }
public ILogger CreateLogger(LogLevel logLevel = LogLevel.Verbose) { DeleteLogs(); var config = new ApplicationLoggerSettings(); config.ApplicationName = "Test App"; config.MinimumLogLevel = logLevel; return(new SeriLogger(config)); }
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(); }
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); } }
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(); }
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(); }