public void lineWithTwoSpaces_ParseLine_AllWhiteSpacesReplacedWithUnderscores() { var fileParser = new LogFileParser(); var actual = fileParser.ParseLine("Line to parse"); Assert.Null(actual); }
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(); }
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); }
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); }
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); }
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()); }
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; }
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)); }
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(); } }