public void Insert(LoggedEvent log)
        {
            var e = _events.FindById(log.Id);

            if (e == null)
            {
                try
                {
                    _events.Insert(new Event
                    {
                        Id        = log.Id,
                        Host      = log.Host,
                        Type      = log.Type,
                        StartTime = log.TimeStamp
                    });
                    return;
                } catch (Exception ex)
                {
                    if (!ex.Message.Contains("duplicate"))
                    {
                        throw ex;
                    }
                }
            }

            if (e == null)
            {
                e = _events.FindById(log.Id);
            }

            e.Duration = Math.Abs(e.StartTime - log.TimeStamp);
            e.Alert    = e.Duration > Event.AlertTreshold;

            _events.Update(e);
        }
        public void Consume(BlockingCollection <LoggedEvent> queue)
        {
            while (!queue.IsCompleted)
            {
                LoggedEvent log = null;

                try
                {
                    log = queue.Take();
                }
                catch (InvalidOperationException) { }

                if (log != null)
                {
                    _db.Insert(log);
                }
            }
        }