public void lineWithTwoSpaces_ParseLine_AllWhiteSpacesReplacedWithUnderscores()
        {
            var fileParser = new LogFileParser();
            var actual     = fileParser.ParseLine("Line to parse");

            Assert.Null(actual);
        }
Exemple #2
0
        protected override void OnShown(EventArgs e)
        {
            _loadingOverlay = LoadingOverlay.PutOn(this);
            _loadingOverlay.CancelRequested += LoadingOverlay_CancelRequested;

            _overlays = new Dictionary <OverlayState, Control>();
            _overlays[OverlayState.Empty]   = EmptyOverlay.PutOn(this);
            _overlays[OverlayState.Loading] = _loadingOverlay;
            var recordingOverlay = RecordingOverlay.PutOn(this);

            recordingOverlay.StopRequested   += btnRecord_Click;
            _overlays[OverlayState.Recording] = recordingOverlay;

            _overlays[OverlayState.Empty].SendToBack();
            _overlays[OverlayState.Loading].BringToFront();
            _overlays[OverlayState.Recording].BringToFront();

            _updateTimer = new System.Threading.Timer(async state => await CheckForUpdatesAsync(), null, 5000, Timeout.Infinite);

            _parser = new LogFileParser(new LogItemParser(), new FileReader(), null)
            {
                Progress = (current, total) => _loadingOverlay.SetProgress(current, total)
            };

            Text = GetAppNameWithVersion();

            base.OnShown(e);

            SetControlVisiblityByContext();
            SetOverlayState(OverlayState.Empty);

            ShowSocialFlyout();
        }
Exemple #3
0
        protected override void OnShown(EventArgs e)
        {
            _loadingOverlay = LoadingOverlay.PutOn(this);
            _loadingOverlay.CancelRequested += LoadingOverlay_CancelRequested;

            _overlays = new Dictionary <OverlayState, Control>();
            _overlays[OverlayState.Empty]   = EmptyOverlay.PutOn(this);
            _overlays[OverlayState.Loading] = _loadingOverlay;
            var recordingOverlay = RecordingOverlay.PutOn(this);

            recordingOverlay.StopRequested   += btnRecord_Click;
            _overlays[OverlayState.Recording] = recordingOverlay;

            _overlays[OverlayState.Empty].SendToBack();
            _overlays[OverlayState.Loading].BringToFront();
            _overlays[OverlayState.Recording].BringToFront();

            _updateTimer = new System.Threading.Timer(async state => await CheckForUpdatesAsync(), null, 5000, Timeout.Infinite);

            _parser = new LogFileParser(new LogItemParser(), new FileReader(), null)
            {
                Progress = (current, total) => _loadingOverlay.SetProgress(current, total)
            };

            var name = this.GetType().Assembly.GetName();

            Text = $"{name.Name} {name.Version.Major}.{name.Version.Minor}" + (name.Version.Build == 0 ? "" : $".{name.Version.Build}");

            base.OnShown(e);

            SetControlVisiblityByContext();
            SetOverlayState(OverlayState.Empty);
        }
            public async Task Parses_All_Items_Of_LogFile1()
            {
                var contentToParse = DumpReader.Read("LogFile1.txt");
                var parser         = new LogFileParser(new LogItemParser(), new PathAsContentRoutingFileReader(), new StringAsFileService(contentToParse));
                var items          = await parser.ParseAsync();

                items.Count.Should().Be(6);
            }
            public async Task Returns_Empty_List_If_RegEx_Does_Not_Match()
            {
                var contentToParse = "I'm just a teenage dirtbag, baby!";
                var parser         = new LogFileParser(new LogItemParser(), new PathAsContentRoutingFileReader(), new StringAsFileService(contentToParse));
                var items          = await parser.ParseAsync();

                items.Count.Should().Be(0);
            }
Exemple #6
0
        private void Init()
        {
            processWatcher = new PoEProcessWatcher();
            logParser      = new LogFileParser();
            logReader      = new LogFileReader(processWatcher.PoEProcessPath);

            xezzModeToolTip.SetToolTip(cb_XezzMode, "Enabling this could get you BANNED! Use at OWN RISK!");
            requestList = new List <PoE_PartyTool.Model.PartyRequest>();

            this.TopMost = true;

            InitTimers();
        }
 public SingleFileMonitorFactory(
     LogFileStreamReaderFactory streamReaderFactory,
     LogFileParser logFileParser)
 {
     if (streamReaderFactory == null)
     {
         throw new ArgumentNullException(nameof(streamReaderFactory));
     }
     if (logFileParser == null)
     {
         throw new ArgumentNullException(nameof(logFileParser));
     }
     this.streamReaderFactory = streamReaderFactory;
     this.logFileParser       = logFileParser;
 }
        public void GlobalChatPartyRequest_map_properPartyRequest()
        {
            string line     = "2020/06/29 09:53:54 399269953 acf [INFO Client 12872] #<#TDE> GSF_HeadHeralding: !inv";
            var    expected = new PartyRequest(new InviteExecutor())
            {
                CharacterName  = "GSF_HeadHeralding",
                GuildName      = "<#TDE>",
                RequestMessage = "!inv",
                RequestSource  = RequestSource.GLOBAL,
                RequestDate    = new DateTime(2020, 6, 29, 9, 53, 54)
            };

            PartyRequest request = new LogFileParser().ParseLine(line);

            request.Should().BeEquivalentTo(expected);
        }
        public void WhisperPartyRequestOhneGilde_map_properPartyRequest()
        {
            string line = "2020/06/06 09:53:54 399269953 acf [INFO Client 12872] @From GSF_HeadHeralding: !inv 1234";

            var expected = new PartyRequest(new InviteExecutor())
            {
                CharacterName  = "GSF_HeadHeralding",
                GuildName      = "",
                RequestMessage = "!inv 1234",
                RequestSource  = RequestSource.WHISPER,
                RequestDate    = new DateTime(2020, 6, 6, 9, 53, 54)
            };

            PartyRequest request = new LogFileParser().ParseLine(line);

            request.Should().BeEquivalentTo(expected);
        }
Exemple #10
0
        private void ParseDailyFile(LogFileInfo logFileInfo, List <LogEntry> result, LogFileParser logFileParser)
        {
            List <string> allLines = new List <string>();

            using (var reader = streamReaderFactory.Create(logFileInfo.FullPath))
            {
                string currentLine;
                while ((currentLine = reader.TryReadNextLine()) != null)
                {
                    allLines.Add(currentLine);
                }
            }

            IList <LogEntry> parsedLines = logFileParser.ParseLinesForDay(
                allLines,
                logFileInfo.LogFileDate.DateTime,
                logFileInfo);

            // reversing the array, so that latest entries are first
            result.AddRange(parsedLines);
        }
Exemple #11
0
        public void ParseBufferTest()
        {
            const string data = "2011-01-24 06:29:46.687|Core.State.StartTime|Core|181188615|356.3245\r\n" +
                                "2011-01-25 07:23:43.234|Core.State.StartTime|Core|181192343|3\r\n";

            byte[] buffer = Encoding.UTF8.GetBytes(data);

            RowIndexCollection indexes = new RowIndexCollection();

            LogFileParser parser = new LogFileParser();

            parser.ParseBuffer(buffer, buffer.Length, indexes);

            List <LogRowIndex> rows = indexes.IndexesByItem["Core.State.StartTime"];

            IEnumerator <LogRowIndex> rowIndexes = rows.GetEnumerator();

            Assert.That(rowIndexes.MoveNext());

            LogRowIndex idx = rowIndexes.Current;

            Assert.AreEqual(0, idx.RowStart);
            Assert.AreEqual(70, idx.RowLength);
            Assert.AreEqual(20, idx.NameLength);
            Assert.AreEqual(4, idx.UserLength);
            Assert.AreEqual(9, idx.CycleLength);

            Assert.That(rowIndexes.MoveNext());

            idx = rowIndexes.Current;

            Assert.AreEqual(70, idx.RowStart);
            Assert.AreEqual(63, idx.RowLength);
            Assert.AreEqual(20, idx.NameLength);
            Assert.AreEqual(4, idx.UserLength);
            Assert.AreEqual(9, idx.CycleLength);

            Assert.That(!rowIndexes.MoveNext());
        }
Exemple #12
0
        private async void UserName_comboBox_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (this.userName_comboBox.SelectedItem == null)
            {
                //this.userName_comboBox.SelectedItem = 0;
                this.userName_comboBox.SelectedItem = this.userName_comboBox.Items[0];
            }
            this.selectedComboboxItem = this.userName_comboBox.GetItemText(this.userName_comboBox.SelectedItem).ToString();

            parsedEntities = LogFileParser.ParceUsersComputers(selectedComboboxItem);
            sortComputers(ref parsedEntities);
            this.parsedEntitiesNames_listBox.DataSource = LogFileParser.getNames(parsedEntities);
            foreach (var el in parsedEntities)
            {
                if (Convert.ToDateTime(el.lastLog.Substring(0, 8)).AddMonths(4) >= DateTime.Now)
                {
                    string computerName = String.Empty;
                    string userName     = String.Empty;
                    switch (selectedSearchType)
                    {
                    case SearchFor.users:
                        computerName = selectedComboboxItem;
                        userName     = el.name;
                        break;

                    case SearchFor.computers:
                        computerName = el.name;
                        userName     = selectedComboboxItem;
                        break;
                    }
                    if (await Task.Run(() => AdminTools.checkUserLogedIn(computerName, userName)))
                    {
                        el.loginStatus = true;
                        this.parsedEntitiesNames_listBox.Refresh();
                    }
                }
            }
        }
        public SingleFileMonitor(
            LogFileInfo logFileInfo,
            LogFileStreamReaderFactory streamReaderFactory,
            LogFileParser logFileParser)
        {
            if (logFileInfo == null)
            {
                throw new ArgumentNullException(nameof(logFileInfo));
            }
            if (streamReaderFactory == null)
            {
                throw new ArgumentNullException(nameof(streamReaderFactory));
            }
            if (logFileParser == null)
            {
                throw new ArgumentNullException(nameof(logFileParser));
            }
            this.logFileInfo         = logFileInfo;
            this.streamReaderFactory = streamReaderFactory;
            this.logFileParser       = logFileParser;

            fileInfo     = new FileInfo(logFileInfo.FullPath);
            lastFileSize = fileInfo.Length;
        }
Exemple #14
0
        public HttpResponseMessage Analyze(LogServiceRequest req)
        {
            _settingsRepo = new SettingsRepository(ActiveModule.ModuleID);

            long   logItemCount = 0;
            string taskId       = req.taskId;
            string logPath      = FileUtils.GetDnnLogPath() + "\\";
            var    p            = new LogAnalyzerHub();

            p.NotifyStart(taskId);

            LogViewModel       vm = new LogViewModel();
            ILogItemRepository repo = new LogItemRepository();
            long totalLogLines = 0, lineIncrement = 0;

            repo.DeleteAllItems(ActiveModule.ModuleID);
            foreach (string logFile in req.files)
            {
                totalLogLines += LogFileParser.GetLineCount(logPath + logFile);
            }
            lineIncrement = Convert.ToInt64(totalLogLines / 100);

            IAnalyzerNotifyer progressNotifyer = new AnalyzerNotifyer(totalLogLines, lineIncrement, taskId, p);

            try
            {
                var analyzer = new LogFileParser(progressNotifyer);

                foreach (string logFile in req.files)
                {
                    var logItems = analyzer.GetEntries(logPath + logFile, "log4net", _settingsRepo.LogAnalyzerRegex);
                    foreach (var li in logItems)
                    {
                        logItemCount++;
                        li.ModuleId = ActiveModule.ModuleID;
                        li.Count    = 1;
                        repo.InsertItem(li);
                    }
                }

                if (logItemCount > 0)
                {
                    // Rollup results and produce report object
                    var reportItems = repo.GetRollupItems(ActiveModule.ModuleID).ToList();
                    vm.ReportedItems = reportItems.GroupBy(r => r.Level, r => r,
                                                           (key, g) => new LogItemCollection {
                        Level = key,
                        Items = g.Take(100).ToList()
                    }
                                                           ).ToList();
                    p.NotifyProgress(taskId, 100, string.Empty);
                }
                else
                {
                    p.NotifyProgress(taskId, -1, "Log files analyzed contain no entries.");
                }
            }
            catch (Exception ex)
            {
                p.NotifyProgress(taskId, -1, "An error occurred analyzing the log: " + ex.Message);
                return(Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message));
            }
            finally
            {
                p.NotifyEnd(taskId);
            }

            return(Request.CreateResponse(HttpStatusCode.OK, vm));
        }
Exemple #15
0
        private void ParseMonthlyFile(
            CharacterMonthlyLogHeuristics heuristicsFileMap,
            LogFileInfo logFileInfo,
            List <LogEntry> result,
            LogFileParser logFileParser)
        {
            var heuristics      = heuristicsFileMap.GetFullHeuristicsForMonth(logFileInfo);
            var dayToSearchFrom = GetMinDayToSearchFrom(logSearchParameters.MinDate, logFileInfo.LogFileDate.DateTime);
            var dayToSearchTo   = GetMaxDayToSearchUpTo(logSearchParameters.MaxDate, logFileInfo.LogFileDate.DateTime);

            List <LogEntry> entries = new List <LogEntry>();

            LogFileStreamReader reader = null;

            try
            {
                for (int day = dayToSearchFrom; day <= dayToSearchTo; day++)
                {
                    var thisDayHeuristics = heuristics.GetForDay(day);

                    if (thisDayHeuristics.LinesLength == 0)
                    {
                        continue;
                    }

                    if (reader == null)
                    {
                        if (heuristics.HasValidFilePositions)
                        {
                            reader = streamReaderFactory.Create(
                                logFileInfo.FullPath,
                                thisDayHeuristics.StartPositionInBytes);
                        }
                        else
                        {
                            reader = streamReaderFactory.CreateWithLineCountFastForward(
                                logFileInfo.FullPath,
                                thisDayHeuristics.TotalLinesSinceBeginFile);
                        }
                    }
                    var thisEntryDate = new DateTime(
                        logFileInfo.LogFileDate.DateTime.Year,
                        logFileInfo.LogFileDate.DateTime.Month,
                        day,
                        0,
                        0,
                        0);

                    int           readLinesCount = 0;
                    List <string> allLines       = new List <string>();

                    string currentLine;
                    while ((currentLine = reader.TryReadNextLine()) != null)
                    {
                        allLines.Add(currentLine);
                        readLinesCount++;
                        if (readLinesCount == thisDayHeuristics.LinesLength)
                        {
                            break;
                        }
                    }

                    IList <LogEntry> parsedLines = logFileParser.ParseLinesForDay(allLines,
                                                                                  thisEntryDate,
                                                                                  logFileInfo);

                    entries.AddRange(parsedLines);

                    cancellationManager.ThrowIfCancelled();
                }

                result.AddRange(entries);
            }
            finally
            {
                reader?.Dispose();
            }
        }