Example #1
0
        public LogQuery(LogQuery other)
        {
            if (other == null)
            {
                throw new ArgumentNullException(nameof(other));
            }

            Source = other.Source != null
                ? other.Source.Clone()
                : null;

            MinLevel = other.MinLevel != null
                ? other.MinLevel.Clone()
                : null;

            Logger    = other.Logger;
            Thread    = other.Thread;
            MinTime   = other.MinTime;
            MaxTime   = other.MaxTime;
            Message   = other.Message;
            Throwable = other.Throwable;
            Quantity  = other.Quantity != null
                ? other.Quantity.Clone()
                : null;

            Offset = other.Offset;
        }
Example #2
0
        // GET: Log
        public ActionResult List(LogQuery formModel)
        {
            var eventsCollection = repository_.GetEvents (formModel);

            var sourceId = eventsCollection.Source;
            var sourceSize = eventsCollection.SourceSize;
            var source = new LogSourceModel (sourceId, sourceSize);

            var sources = repository_
                .GetSources ()
                .Select (id => new LogSourceModel (id, id == sourceId ? (long?) sourceSize : null))
                .ToList ();

            formModel.Source = new LogSourceInput (source, sources);

            var viewModel = new LogIndexViewModel
            {
                Query = formModel,
                Events = eventsCollection.Events
            };

            return View (viewModel);
        }
Example #3
0
        public LogQuery(LogQuery other)
        {
            if (other == null)
            {
                throw new ArgumentNullException ("other");
            }

            Source = other.Source != null
                ? other.Source.Clone ()
                : null;
            MinLevel = other.MinLevel != null
                ? other.MinLevel.Clone ()
                : null;
            Logger = other.Logger;
            Thread = other.Thread;
            MinTime = other.MinTime;
            MaxTime = other.MaxTime;
            Message = other.Message;
            Throwable = other.Throwable;
            Quantity = other.Quantity != null
                ? other.Quantity.Clone ()
                : null;
            Offset = other.Offset;
        }
Example #4
0
        public EventsCollection GetEvents(LogQuery query)
        {
            var source = logSourceProvider_.GetSource(query.SourceId);

            return(source.GetEvents(query));
        }
Example #5
0
        public EventsCollection GetEvents(LogQuery query)
        {
            var sourceModel = query.Source.Value;
            var source = logSourceProvider_.GetSource (sourceModel?.Id);

            using (var logFile = source.Open (sourceModel?.Size))
            using (var filters = new List<FilterBase> ().ToDisposable ())
            {
                if (query.MinLevel.Value != Level.Debug)
                {
                    AddFilter (filters, () => new FilterLevel (query.MinLevel.Value, Level.MaxValue));
                }

                if (!String.IsNullOrWhiteSpace (query.Logger))
                {
                    AddFilter (filters, () => new FilterLogger (query.Logger));
                }

                if (!String.IsNullOrWhiteSpace (query.Message))
                {
                    AddFilter (filters, () => new FilterMessage (query.Message));
                }

                if (query.MinTime > DateTime.MinValue || query.MaxTime < DateTime.MaxValue)
                {
                    AddFilter (filters, () => new FilterTimestamp (query.MinTime, query.MaxTime));
                }

                IEnumerable<Event> filteredEvents;
                switch (filters.Elements.Count)
                {
                    case 0:
                        filteredEvents = logFile.GetEventsReverse ();
                        break;

                    case 1:
                        filteredEvents = logFile
                            .GetEventsReverse ()
                            .Where (filters.Elements.Single ());
                        break;

                    default:
                        FilterAll rootFilter = null;
                        try
                        {
                            rootFilter = new FilterAll ();
                            foreach (var filter in filters.Elements)
                            {
                                rootFilter.Add (filter);
                            }
                        }
                        finally
                        {
                            if (rootFilter != null)
                            {
                                filters.Elements.Add (rootFilter);
                            }
                        }
                        filteredEvents = logFile
                            .GetEventsReverse ()
                            .Where (rootFilter);
                        break;
                }

                var eventsWindow = filteredEvents
                    .Skip (query.Offset)
                    .Take (query.Quantity);

                var events = eventsWindow
                    .Select (x => new EventModel (x))
                    .ToList ();
                events.Reverse ();
                var sourceName = source.Name;
                var sourceSize = logFile.Size;
                return new EventsCollection (events, sourceName, sourceSize);
            }
        }