예제 #1
0
        private ILog CreateLogWithSlack(IServiceCollection services, IReloadingManager <AppSettings> settings)
        {
            var aggregateLogger = new AggregateLogger();

            var consoleLog = new LogToConsole();

            aggregateLogger.AddLog(consoleLog);

            var dbLogConnectionStringManager = settings.Nested(x => x.TradesConverterJob.Db.LogsConnString);
            var dbLogConnectionString        = dbLogConnectionStringManager.CurrentValue;

            if (string.IsNullOrEmpty(dbLogConnectionString))
            {
                consoleLog.WriteWarning(nameof(Startup), nameof(CreateLogWithSlack), "Table loggger is not inited");
                return(aggregateLogger);
            }

            if (dbLogConnectionString.StartsWith("${") && dbLogConnectionString.EndsWith("}"))
            {
                throw new InvalidOperationException($"LogsConnString {dbLogConnectionString} is not filled in settings");
            }

            var persistenceManager = new LykkeLogToAzureStoragePersistenceManager(
                AzureTableStorage <LogEntity> .Create(dbLogConnectionStringManager, "TradesConverterLog", consoleLog),
                consoleLog);

            // Creating slack notification service, which logs own azure queue processing messages to aggregate log
            var slackService = services.UseSlackNotificationsSenderViaAzureQueue(new AzureQueueIntegration.AzureQueueSettings
            {
                ConnectionString = settings.CurrentValue.SlackNotifications.AzureQueue.ConnectionString,
                QueueName        = settings.CurrentValue.SlackNotifications.AzureQueue.QueueName
            }, aggregateLogger);

            var slackNotificationsManager = new LykkeLogToAzureSlackNotificationsManager(
                slackService,
                new HashSet <string> {
                LykkeLogToAzureStorage.ErrorType, LykkeLogToAzureStorage.FatalErrorType, LykkeLogToAzureStorage.MonitorType
            },
                consoleLog);

            var azureStorageLogger = new LykkeLogToAzureStorage(
                persistenceManager,
                slackNotificationsManager,
                consoleLog);

            azureStorageLogger.Start();

            aggregateLogger.AddLog(azureStorageLogger);

            var logToSlack = LykkeLogToSlack.Create(slackService, "Bridges", LogLevel.Error | LogLevel.FatalError | LogLevel.Warning);

            aggregateLogger.AddLog(logToSlack);

            return(aggregateLogger);
        }
        private ILog CreateLogWithSlack(IServiceCollection services, IReloadingManager <AppSettings> settings)
        {
            _console = new LogToConsole();
            var aggregateLogger = new AggregateLogger();

            aggregateLogger.AddLog(_console);

            var dbLogConnectionStringManager = settings.Nested(x => x.TradeVolumesService.LogsConnString);
            var dbLogConnectionString        = dbLogConnectionStringManager.CurrentValue;

            if (string.IsNullOrEmpty(dbLogConnectionString))
            {
                _console.WriteWarning(nameof(Startup), nameof(CreateLogWithSlack), "Table loggger is not inited");
                return(aggregateLogger);
            }

            if (dbLogConnectionString.StartsWith("${") && dbLogConnectionString.EndsWith("}"))
            {
                throw new InvalidOperationException($"LogsConnString {dbLogConnectionString} is not filled in settings");
            }

            var persistenceManager = new LykkeLogToAzureStoragePersistenceManager(
                AzureTableStorage <LogEntity> .Create(dbLogConnectionStringManager, "TradeVolumesLog", _console),
                _console);

            // Creating slack notification service, which logs own azure queue processing messages to aggregate log
            var slackService = services.UseSlackNotificationsSenderViaAzureQueue(new AzureQueueIntegration.AzureQueueSettings
            {
                ConnectionString = settings.CurrentValue.SlackNotifications.AzureQueue.ConnectionString,
                QueueName        = settings.CurrentValue.SlackNotifications.AzureQueue.QueueName
            }, aggregateLogger);

            var slackNotificationsManager = new LykkeLogToAzureSlackNotificationsManager(slackService, _console);

            // Creating azure storage logger, which logs own messages to concole log
            var azureStorageLogger = new LykkeLogToAzureStorage(
                persistenceManager,
                slackNotificationsManager,
                _console);

            azureStorageLogger.Start();

            aggregateLogger.AddLog(azureStorageLogger);

            return(aggregateLogger);
        }
예제 #3
0
        public async Task WriteWarning(string component, string process, string context, string info, DateTime?dateTime = null)
        {
            await _consoleLog.WriteWarning(component, process, context, info);

            await _tableLog.WriteWarning(component, process, context, info);
        }