private void FlushQueue()
        {
            FlushingIntervalDeadline = DateTime.Now.MillisecondsSince1970() + (long)FlushInterval.TotalMilliseconds;

            if (CurrentBatch.Count == 0)
            {
                return;
            }

            List <UserEvent> toProcessBatch = null;

            lock (mutex)
            {
                toProcessBatch = new List <UserEvent>(CurrentBatch);
                CurrentBatch.Clear();
            }


            LogEvent logEvent = EventFactory.CreateLogEvent(toProcessBatch.ToArray(), Logger);

            NotificationCenter?.SendNotifications(NotificationCenter.NotificationType.LogEvent, logEvent);

            try
            {
                EventDispatcher?.DispatchEvent(logEvent);
            }
            catch (Exception e)
            {
                Logger.Log(LogLevel.ERROR, "Error dispatching event: " + logEvent + " " + e);
            }
        }
示例#2
0
        public void Process(UserEvent userEvent)
        {
            var logEvent = EventFactory.CreateLogEvent(userEvent, Logger);

            try
            {
                EventDispatcher.DispatchEvent(logEvent);
                NotificationCenter?.SendNotifications(NotificationCenter.NotificationType.LogEvent, logEvent);
            }
            catch (Exception ex)
            {
                Logger.Log(LogLevel.ERROR, $"Error dispatching event: {logEvent.GetParamsAsJson()}. {ex.Message}");
                ErrorHandler.HandleError(ex);
            }
        }