Exemplo n.º 1
0
        private LykkeLogToSlack(
            ISlackNotificationsSender sender,
            string channel,
            LogLevel logLevel,
            bool disableAntiSpam,
            ILog lastResortLog)
        {
            _sender  = sender;
            _channel = channel;

            _isInfoEnabled       = logLevel.HasFlag(LogLevel.Info);
            _isMonitorEnabled    = logLevel.HasFlag(LogLevel.Monitoring);
            _isWarningEnabled    = logLevel.HasFlag(LogLevel.Warning);
            _isErrorEnabled      = logLevel.HasFlag(LogLevel.Error);
            _isFatalErrorEnabled = logLevel.HasFlag(LogLevel.FatalError);

            _componentNamePrefix = GetComponentNamePrefix();

            _spamGuard = new SpamGuard <LogLevel>(lastResortLog ?? new LogToConsole());
            if (disableAntiSpam)
            {
                _spamGuard.DisableGuarding();
            }
            else
            {
                SetSpamMutePeriodForLevels(TimeSpan.FromMinutes(1), LogLevel.Warning, LogLevel.Error, LogLevel.Info);
                _spamGuard.Start();
            }
        }
Exemplo n.º 2
0
 protected BrokerApplicationBase(ILog logger, ISlackNotificationsSender slackNotificationsSender,
                                 CurrentApplicationInfo applicationInfo)
 {
     _logger = logger;
     _slackNotificationsSender = slackNotificationsSender;
     ApplicationInfo           = applicationInfo;
 }
 /// <summary>
 /// C-tor with a custom component name and default log levels collection.
 /// </summary>
 /// <param name="componentName">Custom component name</param>
 /// <param name="slackNotificationsSender">Sender for slack messages</param>
 /// <param name="lastResortLog">Logger</param>
 public LykkeLogToAzureSlackNotificationsManager(
     string componentName,
     ISlackNotificationsSender slackNotificationsSender,
     ILog lastResortLog = null)
     : this(componentName, slackNotificationsSender, false, lastResortLog)
 {
 }
        public Application(
            IExecutionOrderBookRepository executionOrderBookRepository,
            ILog logger,
            Settings settings,
            CurrentApplicationInfo applicationInfo,
            ISlackNotificationsSender slackNotificationsSender)
            : base(logger, slackNotificationsSender, applicationInfo, MessageFormat.MessagePack)
        {
            _executionOrderBookRepository = executionOrderBookRepository;
            _log      = logger;
            _settings = settings;

            _retryPolicy = Policy
                           .Handle <Exception>()
                           .WaitAndRetryAsync(new[]
            {
                TimeSpan.FromSeconds(1),
                TimeSpan.FromSeconds(2),
                TimeSpan.FromSeconds(4),
                TimeSpan.FromSeconds(8),
            }, onRetry: (exception, timespan, retryCount, context) =>
            {
                _log.WriteWarningAsync(nameof(ExecutionOrderBookBroker), nameof(HandleMessage),
                                       $"Cannot save orderBookMessage with order id {context["id"]}, external order id {context["externalOrderId"]}, retryCount {retryCount}",
                                       exception);
            });
        }
Exemplo n.º 5
0
 public BackendMaintenanceModeService(
     ISlackNotificationsSender slackNotificationsSender,
     MarginTradingSettings settings)
 {
     _slackNotificationsSender = slackNotificationsSender;
     _settings = settings;
 }
 /// <summary>
 /// C-tor with a standard component name and deafult log levels collection and antispam protection control flag.
 /// </summary>
 /// <param name="slackNotificationsSender">Sender for slack messages</param>
 /// <param name="disableAntiSpam">Flag for antispam protection control</param>
 /// <param name="lastResortLog">Logger</param>
 public LykkeLogToAzureSlackNotificationsManager(
     ISlackNotificationsSender slackNotificationsSender,
     bool disableAntiSpam,
     ILog lastResortLog = null)
     : this(AppEnvironment.Name, slackNotificationsSender, disableAntiSpam, lastResortLog)
 {
 }
 public TraceService(ISystem system, LykkeLogToAzureStorage logToAzureStorage,
                     ISlackNotificationsSender slackNotificationsSender, ISettingsService settingsService)
 {
     _system                   = system;
     _logToAzureStorage        = logToAzureStorage;
     _slackNotificationsSender = slackNotificationsSender;
     _settingsService          = settingsService;
 }
 /// <summary>
 /// C-tor with standard component name and custom collection of log levels.
 /// </summary>
 /// <param name="slackNotificationsSender"></param>
 /// <param name="logLevels"></param>
 /// <param name="lastResortLog"></param>
 public LykkeLogToAzureSlackNotificationsManager(
     ISlackNotificationsSender slackNotificationsSender,
     HashSet <string> logLevels,
     ILog lastResortLog = null)
     : this(AppEnvironment.Name, slackNotificationsSender, false, lastResortLog)
 {
     _logLevels = logLevels ?? new HashSet <string>();
 }
Exemplo n.º 9
0
 public Application(IMarginTradingOrdersHistoryRepository ordersHistoryRepository, ILog logger,
                    Settings settings, CurrentApplicationInfo applicationInfo,
                    ISlackNotificationsSender slackNotificationsSender) : base(logger, slackNotificationsSender,
                                                                               applicationInfo)
 {
     _ordersHistoryRepository = ordersHistoryRepository;
     _settings = settings;
 }
Exemplo n.º 10
0
 /// <summary>
 /// Creates logger with, which logs entries of the given <paramref name="logLevel"/>, to the given <paramref name="channel"/>,
 /// using given <paramref name="sender"/> with a flag to disable antispam protection
 /// </summary>
 public static ILog Create(
     ISlackNotificationsSender sender,
     string channel,
     LogLevel logLevel    = LogLevel.All,
     bool disableAntiSpam = true)
 {
     return(new LykkeLogToSlack(sender, channel, logLevel, disableAntiSpam, null));
 }
Exemplo n.º 11
0
 public AlertService(IRabbitMqService rabbitMqService,
                     IReloadingManager <MarginTradingOrderbookAggregatorSettings> settings, ISlackNotificationsSender slack,
                     IAlertSeverityLevelService alertSeverityLevelService)
 {
     _rabbitMqService           = rabbitMqService;
     _settings                  = settings;
     _slack                     = slack;
     _alertSeverityLevelService = alertSeverityLevelService;
 }
Exemplo n.º 12
0
 public Application(ILog logger, Settings settings,
                    CurrentApplicationInfo applicationInfo,
                    IOrderbookBestPricesRepository orderbookBestPricesRepository,
                    ISlackNotificationsSender slackNotificationsSender)
     : base(logger, slackNotificationsSender, applicationInfo)
 {
     _settings = settings;
     _orderbookBestPricesRepository = orderbookBestPricesRepository;
 }
Exemplo n.º 13
0
 public Application(ILog logger, Settings settings,
                    CurrentApplicationInfo applicationInfo,
                    ISlackNotificationsSender slackNotificationsSender,
                    IReloadingManager <Settings> reloadingManager)
     : base(logger, slackNotificationsSender, applicationInfo)
 {
     _settings         = settings;
     _reloadingManager = reloadingManager;
 }
Exemplo n.º 14
0
        /// <summary>
        /// Creates lykke health notifier for the specific app
        /// </summary>
        /// <param name="slackSender">Slack sender factory</param>
        internal HealthNotifier([NotNull] ISlackNotificationsSender slackSender)

            : this(
                AppEnvironment.Name,
                AppEnvironment.Version,
                AppEnvironment.EnvInfo,
                slackSender)
        {
        }
Exemplo n.º 15
0
 public ManualHubCashoutFunction(IOffchainSettingsRepository offchainSettingsRepository, ILog log, IOffchainRequestService offchainRequestService, ISlackNotificationsSender slackNotificationsSender, IWalletCredentialsRepository walletCredentialsRepository, IBitcoinApi bitcoinApi)
 {
     _offchainSettingsRepository = offchainSettingsRepository;
     _log = log;
     _offchainRequestService      = offchainRequestService;
     _slackNotificationsSender    = slackNotificationsSender;
     _walletCredentialsRepository = walletCredentialsRepository;
     _bitcoinApi = bitcoinApi;
 }
Exemplo n.º 16
0
 public Application(ILog logger, Settings settings,
                    CurrentApplicationInfo applicationInfo,
                    IAccountMarginEventsReportsRepository accountMarginEventsReportsRepository,
                    ISlackNotificationsSender slackNotificationsSender)
     : base(logger, slackNotificationsSender, applicationInfo)
 {
     _settings = settings;
     _accountMarginEventsReportsRepository = accountMarginEventsReportsRepository;
 }
Exemplo n.º 17
0
 public Application(IMarginTradingAccountHistoryRepository accountHistoryRepository, ILog logger,
                    Settings settings, CurrentApplicationInfo applicationInfo,
                    IAccountTransactionsReportsRepository accountTransactionsReportsRepository,
                    ISlackNotificationsSender slackNotificationsSender)
     : base(logger, slackNotificationsSender, applicationInfo)
 {
     _accountHistoryRepository = accountHistoryRepository;
     _settings = settings;
     _accountTransactionsReportsRepository = accountTransactionsReportsRepository;
 }
Exemplo n.º 18
0
 public Application(IExternalOrderReportRepository externalOrderReportRepository,
                    ILog logger,
                    Settings.AppSettings appSettings,
                    CurrentApplicationInfo applicationInfo,
                    ISlackNotificationsSender slackNotificationsSender)
     : base(logger, slackNotificationsSender, applicationInfo)
 {
     _externalOrderReportRepository = externalOrderReportRepository;
     _appSettings = appSettings;
 }
Exemplo n.º 19
0
 public BroadcastCommitmentFunction(IOffchainRequestService offchainRequestService, ILog logger,
                                    IBitcoinApi bitcoinApi, IWalletCredentialsRepository walletCredentialsRepository,
                                    IOffchainSettingsRepository offchainSettingsRepository, ISlackNotificationsSender slackNotificationsSender)
 {
     _offchainRequestService = offchainRequestService;
     _bitcoinApi             = bitcoinApi;
     _logger = logger;
     _walletCredentialsRepository = walletCredentialsRepository;
     _offchainSettingsRepository  = offchainSettingsRepository;
     _slackNotificationsSender    = slackNotificationsSender;
 }
Exemplo n.º 20
0
 /// <summary>
 /// Creates lykke health notifier for the specific app
 /// </summary>
 /// <param name="appName">Name of the app</param>
 /// <param name="appVersion">Version of the app</param>
 /// <param name="envInfo">ENV_INFO environment variable of the app</param>
 /// <param name="slackSender">Slack sender</param>
 public HealthNotifier(
     [NotNull] string appName,
     [NotNull] string appVersion,
     [NotNull] string envInfo,
     [NotNull] ISlackNotificationsSender slackSender)
 {
     _appName     = appName ?? throw new ArgumentNullException(nameof(appName));
     _appVersion  = appVersion ?? throw new ArgumentNullException(nameof(appVersion));
     _envInfo     = envInfo ?? throw new ArgumentNullException(nameof(envInfo));
     _slackSender = slackSender ?? throw new ArgumentNullException(nameof(slackSender));
 }
Exemplo n.º 21
0
 protected AccountStatReportsApplication(ILog logger,
                                         Settings settings, CurrentApplicationInfo applicationInfo,
                                         IAccountsStatsReportsRepository accountsStatsReportsRepository,
                                         IMarginTradingAccountStatsRepository statsRepository,
                                         ISlackNotificationsSender slackNotificationsSender)
     : base(logger, slackNotificationsSender, applicationInfo)
 {
     _settings = settings;
     _accountsStatsReportsRepository = accountsStatsReportsRepository;
     _statsRepository = statsRepository;
 }
Exemplo n.º 22
0
 public Application(
     IExecutionOrderBookRepository executionOrderBookRepository,
     ILog logger,
     Settings settings,
     CurrentApplicationInfo applicationInfo,
     ISlackNotificationsSender slackNotificationsSender)
     : base(logger, slackNotificationsSender, applicationInfo, MessageFormat.MessagePack)
 {
     _executionOrderBookRepository = executionOrderBookRepository;
     _log      = logger;
     _settings = settings;
 }
Exemplo n.º 23
0
 public Application(
     RabbitMqCorrelationManager correlationManager,
     ILoggerFactory loggerFactory,
     ILog logger,
     Settings settings,
     CurrentApplicationInfo applicationInfo,
     IAccountMarginEventsRepository accountMarginEventsRepository,
     ISlackNotificationsSender slackNotificationsSender)
     : base(correlationManager, loggerFactory, logger, slackNotificationsSender, applicationInfo)
 {
     _settings = settings;
     _accountMarginEventsRepository = accountMarginEventsRepository;
 }
 public Application(
     IDatabase redisDatabase,
     ISystemClock systemClock,
     ILog logger,
     Settings settings,
     CurrentApplicationInfo applicationInfo,
     ISlackNotificationsSender slackNotificationsSender)
     : base(logger, slackNotificationsSender, applicationInfo, MessageFormat.MessagePack)
 {
     _redisDatabase = redisDatabase;
     _systemClock   = systemClock;
     _log           = logger;
     _settings      = settings;
 }
 public Application(
     ISystemClock systemClock,
     ILog logger,
     Settings settings,
     CurrentApplicationInfo applicationInfo,
     ISlackNotificationsSender slackNotificationsSender,
     IConnectionMultiplexer redis)
     : base(logger, slackNotificationsSender, applicationInfo, MessageFormat.MessagePack)
 {
     _systemClock = systemClock;
     _log         = logger;
     _settings    = settings;
     _redis       = redis;
 }
Exemplo n.º 26
0
 protected BrokerApplicationBase(RabbitMqCorrelationManager correlationManager, ILoggerFactory loggerFactory, ILog logger, ISlackNotificationsSender slackNotificationsSender,
                                 CurrentApplicationInfo applicationInfo, MessageFormat messageFormat = MessageFormat.Json)
 {
     _correlationManager = correlationManager;
     LoggerFactory       = loggerFactory;
     Logger = logger;
     _slackNotificationsSender = slackNotificationsSender;
     ApplicationInfo           = applicationInfo;
     MessageDeserializer       = messageFormat == MessageFormat.Json
         ? new JsonMessageDeserializer <TMessage>()
         : (IMessageDeserializer <TMessage>) new MessagePackMessageDeserializer <TMessage>();
     MessageSerializer = messageFormat == MessageFormat.Json
         ? new JsonMessageSerializer <TMessage>()
         : (IRabbitMqSerializer <TMessage>) new MessagePackMessageSerializer <TMessage>();
 }
Exemplo n.º 27
0
 public Application(
     CorrelationContextAccessor correlationContextAccessor,
     RabbitMqCorrelationManager correlationManager,
     ILoggerFactory loggerFactory,
     IOrdersHistoryRepository ordersHistoryRepository,
     ITradesRepository tradesRepository,
     ILog logger,
     Settings settings, CurrentApplicationInfo applicationInfo,
     ISlackNotificationsSender slackNotificationsSender) : base(correlationManager,
                                                                loggerFactory, logger, slackNotificationsSender, applicationInfo)
 {
     _correlationContextAccessor = correlationContextAccessor;
     _ordersHistoryRepository    = ordersHistoryRepository;
     _tradesRepository           = tradesRepository;
     _log      = logger;
     _settings = settings;
 }
 public Application(
     CorrelationContextAccessor correlationContextAccessor,
     RabbitMqCorrelationManager correlationManager,
     ILoggerFactory loggerFactory,
     IAccountHistoryRepository accountHistoryRepository,
     ILog log,
     Settings settings,
     CurrentApplicationInfo applicationInfo,
     ISlackNotificationsSender slackNotificationsSender,
     IAccountsApi accountsApi)
     : base(correlationManager, loggerFactory, log, slackNotificationsSender, applicationInfo, MessageFormat.MessagePack)
 {
     _correlationContextAccessor = correlationContextAccessor;
     _accountHistoryRepository   = accountHistoryRepository;
     _log         = log;
     _settings    = settings;
     _accountsApi = accountsApi;
 }
 public Application(
     CorrelationContextAccessor correlationContextAccessor,
     RabbitMqCorrelationManager correlationManager,
     ILoggerFactory loggerFactory,
     IPositionsHistoryRepository positionsHistoryRepository,
     IDealsRepository dealsRepository,
     ILog logger,
     IConvertService convertService,
     Settings settings,
     CurrentApplicationInfo applicationInfo,
     ISlackNotificationsSender slackNotificationsSender)
     : base(correlationManager, loggerFactory, logger, slackNotificationsSender, applicationInfo)
 {
     _correlationContextAccessor = correlationContextAccessor;
     _positionsHistoryRepository = positionsHistoryRepository;
     _dealsRepository            = dealsRepository;
     _log            = logger;
     _settings       = settings;
     _convertService = convertService;
 }
Exemplo n.º 30
0
        /// <param name="serviceCollection">Service collection to which log instance will be added</param>
        /// <param name="connectionString">Connection string's realoading manager</param>
        /// <param name="slackNotificationsSender">Slack notification sender to which warnings and errors will be forwarded</param>
        /// <param name="tableName">Log's table name. Default is "Logs"</param>
        /// <param name="lastResortLog">Last resort log (e.g. Console), which will be used to log logging infrastructure's issues</param>
        /// <param name="maxBatchLifetime">Log entries batch's lifetime, when exceeded, batch will be saved, and new batch will be started. Default is 5 seconds</param>
        /// <param name="batchSizeThreshold">Log messages batch's max size, when exceeded, batch will be saved, and new batch will be started. Default is 100 entries</param>
        /// <param name="disableSlackAntiSpam">Flag for slack antispam protection control</param>
        public static LykkeLogToAzureStorage UseLogToAzureStorage(this IServiceCollection serviceCollection,
                                                                  IReloadingManager <string> connectionString,
                                                                  ISlackNotificationsSender slackNotificationsSender = null,
                                                                  string tableName          = "Logs",
                                                                  ILog lastResortLog        = null,
                                                                  TimeSpan?maxBatchLifetime = null,
                                                                  int batchSizeThreshold    = 100,
                                                                  bool disableSlackAntiSpam = false)
        {
            var persistenceManager = new LykkeLogToAzureStoragePersistenceManager(
                AzureTableStorage <LogEntity> .Create(connectionString, tableName, lastResortLog),
                lastResortLog);

            var slackNotificationsManager = slackNotificationsSender != null
                ? new LykkeLogToAzureSlackNotificationsManager(slackNotificationsSender, disableSlackAntiSpam, lastResortLog)
                : null;

            var log = new LykkeLogToAzureStorage(
                persistenceManager,
                slackNotificationsManager,
                lastResortLog,
                maxBatchLifetime,
                batchSizeThreshold,
                ownPersistenceManager: true,
                ownSlackNotificationsManager: true);

            log.Start();

            if (lastResortLog == null)
            {
                serviceCollection.AddSingleton <ILog>(log);
            }
            else
            {
                var aggregatedLog = new AggregateLogger();
                aggregatedLog.AddLog(lastResortLog);
                aggregatedLog.AddLog(log);
                serviceCollection.AddSingleton <ILog>(aggregatedLog);
            }
            return(log);
        }