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(); } }
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); }); }
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>(); }
public Application(IMarginTradingOrdersHistoryRepository ordersHistoryRepository, ILog logger, Settings settings, CurrentApplicationInfo applicationInfo, ISlackNotificationsSender slackNotificationsSender) : base(logger, slackNotificationsSender, applicationInfo) { _ordersHistoryRepository = ordersHistoryRepository; _settings = settings; }
/// <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)); }
public AlertService(IRabbitMqService rabbitMqService, IReloadingManager <MarginTradingOrderbookAggregatorSettings> settings, ISlackNotificationsSender slack, IAlertSeverityLevelService alertSeverityLevelService) { _rabbitMqService = rabbitMqService; _settings = settings; _slack = slack; _alertSeverityLevelService = alertSeverityLevelService; }
public Application(ILog logger, Settings settings, CurrentApplicationInfo applicationInfo, IOrderbookBestPricesRepository orderbookBestPricesRepository, ISlackNotificationsSender slackNotificationsSender) : base(logger, slackNotificationsSender, applicationInfo) { _settings = settings; _orderbookBestPricesRepository = orderbookBestPricesRepository; }
public Application(ILog logger, Settings settings, CurrentApplicationInfo applicationInfo, ISlackNotificationsSender slackNotificationsSender, IReloadingManager <Settings> reloadingManager) : base(logger, slackNotificationsSender, applicationInfo) { _settings = settings; _reloadingManager = reloadingManager; }
/// <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) { }
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; }
public Application(ILog logger, Settings settings, CurrentApplicationInfo applicationInfo, IAccountMarginEventsReportsRepository accountMarginEventsReportsRepository, ISlackNotificationsSender slackNotificationsSender) : base(logger, slackNotificationsSender, applicationInfo) { _settings = settings; _accountMarginEventsReportsRepository = accountMarginEventsReportsRepository; }
public Application(IMarginTradingAccountHistoryRepository accountHistoryRepository, ILog logger, Settings settings, CurrentApplicationInfo applicationInfo, IAccountTransactionsReportsRepository accountTransactionsReportsRepository, ISlackNotificationsSender slackNotificationsSender) : base(logger, slackNotificationsSender, applicationInfo) { _accountHistoryRepository = accountHistoryRepository; _settings = settings; _accountTransactionsReportsRepository = accountTransactionsReportsRepository; }
public Application(IExternalOrderReportRepository externalOrderReportRepository, ILog logger, Settings.AppSettings appSettings, CurrentApplicationInfo applicationInfo, ISlackNotificationsSender slackNotificationsSender) : base(logger, slackNotificationsSender, applicationInfo) { _externalOrderReportRepository = externalOrderReportRepository; _appSettings = appSettings; }
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; }
/// <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)); }
protected AccountStatReportsApplication(ILog logger, Settings settings, CurrentApplicationInfo applicationInfo, IAccountsStatsReportsRepository accountsStatsReportsRepository, IMarginTradingAccountStatsRepository statsRepository, ISlackNotificationsSender slackNotificationsSender) : base(logger, slackNotificationsSender, applicationInfo) { _settings = settings; _accountsStatsReportsRepository = accountsStatsReportsRepository; _statsRepository = statsRepository; }
public Application( IExecutionOrderBookRepository executionOrderBookRepository, ILog logger, Settings settings, CurrentApplicationInfo applicationInfo, ISlackNotificationsSender slackNotificationsSender) : base(logger, slackNotificationsSender, applicationInfo, MessageFormat.MessagePack) { _executionOrderBookRepository = executionOrderBookRepository; _log = logger; _settings = settings; }
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; }
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>(); }
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; }
/// <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); }