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); } }
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); } }