public void Add(LogRecord logRecord)
        {
            if (_minDate == DateTime.MinValue && _maxDate == DateTime.MinValue)
            {
                _minDate = logRecord.DateTime;
                _maxDate = logRecord.DateTime;
            }

            if (logRecord.DateTime < _minDate)
            {
                _minDate = logRecord.DateTime;
            }

            if (logRecord.DateTime > _maxDate)
            {
                _maxDate = logRecord.DateTime;
            }

            var urlStats = _urlStatsCollection.FirstOrDefault(s => s.Url == logRecord.Url);
            if (urlStats == null)
            {
                urlStats = new UrlStats();
                urlStats.Url = logRecord.Url;
                _urlStatsCollection.Add(urlStats);
            }

            urlStats.Add(logRecord);
        }
        private void ProcessLogLine(string line)
        {
            if (_lineFormat == null) return;

            var logRecord = new LogRecord(line, _lineFormat);
            if (logRecord.IsValid)
            {
                if (logRecord.DateTime >= _from && logRecord.DateTime <= _to)
                {
                    // here you can add any custom url pre-processing (filtering, grouping) you want
                    _logStats.Add(logRecord);
                }
            }
        }