Beispiel #1
0
 protected virtual void ReloadConfigs(object state)
 {
     try
     {
         if (Client.CanSendData == false)
         {
             return;
         }
         var period = Client.Config.Logs.WebLog.ReloadConfigsPeriod;
         if (period == TimeSpan.Zero)
         {
             return;
         }
         var now = DateTime.Now;
         if (LastReloadConfigsDate + period > now)
         {
             return;
         }
         LastReloadConfigsDate = now;
         lock (ReloadConfigsSynchRoot)
         {
             if (ReloadControls.Count == 0)
             {
                 return;
             }
             var maxUpdateDate = ReloadControls.Max(x => x.WebLogConfig.LastUpdateDate);
             var componentIds  = ReloadControls.Select(x => x.Info.Id).ToList();
             var newConfigs    = Client.ApiService.GetChangedWebLogConfigs(maxUpdateDate, componentIds);
             if (newConfigs.Success)
             {
                 foreach (var config in newConfigs.Data)
                 {
                     // может быть 2 контрола с одинаковым ИД, из-за того,
                     // что один получили (GetOrCreate) от родителя, а второго из папки родителя
                     var controls = ReloadControls.Where(x => x.Info.Id == config.ComponentId);
                     foreach (var control in controls)
                     {
                         var oldConfig = control.WebLogConfig;
                         oldConfig.Enabled          = config.Enabled;
                         oldConfig.IsTraceEnabled   = config.IsTraceEnabled;
                         oldConfig.IsDebugEnabled   = config.IsDebugEnabled;
                         oldConfig.IsInfoEnabled    = config.IsInfoEnabled;
                         oldConfig.IsWarningEnabled = config.IsWarningEnabled;
                         oldConfig.IsErrorEnabled   = config.IsErrorEnabled;
                         oldConfig.IsFatalEnabled   = config.IsFatalEnabled;
                         oldConfig.LastUpdateDate   = config.LastUpdateDate;
                     }
                 }
             }
         }
     }
     catch (Exception exception)
     {
         Client.InternalLog.Error("Ошибка перезагрузки настроек веб-логов", exception);
     }
 }
Beispiel #2
0
 public void EndReloadConfig(IComponentControl componentControl)
 {
     lock (ReloadConfigsSynchRoot)
     {
         ReloadControls.Remove(componentControl);
         if (componentControl.IsFake() == false)
         {
             ReloadControls.RemoveAll(x => x.IsFake() == false && x.Info.Id == componentControl.Info.Id);
         }
     }
 }
Beispiel #3
0
 public void BeginReloadConfig(IComponentControl componentControl)
 {
     lock (ReloadConfigsSynchRoot)
     {
         var data = ReloadControls.FirstOrDefault(x => x == componentControl);
         if (data == null)
         {
             ReloadControls.Add(componentControl);
         }
     }
 }