private void UpdateLogFileList(string selectedDirectoryTitle = null) { if (selectedDirectoryTitle == null) { FileTarget fileTarget = (FileTarget)LogManager.Configuration.FindTargetByName("file"); // Need to set timestamp here if filename uses date. // For example - filename="${basedir}/logs/${shortdate}/trace.log" LogEventInfo logEventInfo = new LogEventInfo { TimeStamp = DateTime.Now }; string fileName = fileTarget.FileName.Render(logEventInfo); selectedDirectoryTitle = Path.GetDirectoryName(fileName); } else { this.selectedDirectoryTitle = selectedDirectoryTitle; } string errorSearchTerm; string warningSearchTerm; // remember user selection string selectedIndexValue = null; int selectedIndex = listBoxViewLogFiles.SelectedIndex; if (selectedIndex >= 0) { selectedIndexValue = listBoxViewLogFiles.SelectedItems[0].ToString(); } switch (selectedDirectoryTitle) { case "SnapRAID Scheduled Jobs": // SnapRAID Scheduled Jobs errorSearchTerm = snapraidErrorSearchTerm; warningSearchTerm = snapraidWarningSearchTerm; LexerToUse = LexerNameEnum.ScanRaid; logSourcePath = selectedDirectoryTitle; if (!Directory.Exists(logSourcePath)) { return; } logFileWatcher.Path = selectedDirectoryTitle; logFileWatcher.Filter = "*.log"; logFileWatcher.EnableRaisingEvents = true; break; case "Elucidate": // Elucidate errorSearchTerm = elucidateErrorSearchTerm; warningSearchTerm = elucidateWarningSearchTerm; LexerToUse = LexerNameEnum.NLog; logSourcePath = selectedDirectoryTitle; if (!Directory.Exists(logSourcePath)) { return; } logFileWatcher.Path = selectedDirectoryTitle; logFileWatcher.Filter = "*.log"; logFileWatcher.EnableRaisingEvents = true; break; default: logFileWatcher.EnableRaisingEvents = false; return; } Log.Debug($@"logSourcePath : {logSourcePath}"); listBoxViewLogFiles.Items.Clear(); DirectoryInfo logFileDirectoryInfo = new DirectoryInfo(logSourcePath); List <FileInfo> allLogs = logFileDirectoryInfo.GetFiles("*.log").OrderByDescending(a => a.Name).ToList(); List <FileInfo> filteredLogs = new List <FileInfo>(); if (checkedFilesWithError.Checked) { IEnumerable <FileInfo> filesWithErrors = from file in allLogs let fileText = GetFileText(file.FullName) where fileText.Contains(errorSearchTerm) select file; filteredLogs = filteredLogs.Union(filesWithErrors).ToList(); } if (checkedFilesWithWarn.Checked) { IEnumerable <FileInfo> filesWithWarnings = from file in allLogs let fileText = GetFileText(file.FullName) where fileText.Contains(warningSearchTerm) select file; filteredLogs = filteredLogs.Union(filesWithWarnings).ToList(); } List <FileInfo> logsToShow = filteredLogs.Count > 0 ? filteredLogs : allLogs; logsToShow = logsToShow.OrderByDescending(a => a.Name).ToList(); foreach (FileInfo log in logsToShow) { listBoxViewLogFiles.Items.Add(log.Name); } // restore user selection, if it still exists if (selectedIndex >= 0 && !string.IsNullOrEmpty(selectedIndexValue)) { int indexFound = listBoxViewLogFiles.FindStringExact(selectedIndexValue); if (indexFound >= 0) { listBoxViewLogFiles.SelectedIndex = indexFound; } } }
private void UpdateLogFileList(string selectedDirectoryTitle = null) { if (selectedDirectoryTitle == null) { selectedDirectoryTitle = _selectedDirectoryTitle; } else { _selectedDirectoryTitle = selectedDirectoryTitle; } string errorSearchTerm; string warningSearchTerm; // remember user selection string selectedIndexValue = null; int selectedIndex = -1; selectedIndex = listBoxViewLogFiles.SelectedIndex; if (selectedIndex >= 0) { selectedIndexValue = listBoxViewLogFiles.SelectedItems[0].ToString(); } switch (selectedDirectoryTitle) { case "SnapRAID Scheduled Jobs": // SnapRAID Scheduled Jobs errorSearchTerm = _snapraidErrorSearchTerm; warningSearchTerm = _snapraidWarningSearchTerm; LexerToUse = LexerNameEnum.ScanRaid; _logSourcePath = $@"{Path.GetDirectoryName(Properties.Settings.Default.ConfigFileLocation)}\{Properties.Settings.Default.LogFileDirectory}\"; _logFileWatcher.Path = $@"{Path.GetDirectoryName(Properties.Settings.Default.ConfigFileLocation)}\{Properties.Settings.Default.LogFileDirectory}\"; _logFileWatcher.Filter = "*.log"; _logFileWatcher.EnableRaisingEvents = true; break; case "Elucidate": // Elucidate errorSearchTerm = _elucidateErrorSearchTerm; warningSearchTerm = _elucidateWarningSearchTerm; LexerToUse = LexerNameEnum.NLog; _logSourcePath = LogFileLocation.GetActiveLogFileLocation(); _logFileWatcher.Path = LogFileLocation.GetActiveLogFileLocation(); _logFileWatcher.Filter = "*.log"; _logFileWatcher.EnableRaisingEvents = true; break; default: _logFileWatcher.EnableRaisingEvents = false; return; } Log.Instance.Debug($"_logSourcePath : {_logSourcePath}"); listBoxViewLogFiles.Items.Clear(); if (!Directory.Exists(_logSourcePath)) { return; } DirectoryInfo logFileDirectoryInfo = new DirectoryInfo(_logSourcePath); List <FileInfo> allLogs = logFileDirectoryInfo.GetFiles("*.log").OrderByDescending(a => a.Name).ToList(); List <FileInfo> filteredLogs = new List <FileInfo>(); if (checkedFilesWithError.Checked) { IEnumerable <FileInfo> filesWithErrors = from file in allLogs let fileText = GetFileText(file.FullName) where fileText.Contains(errorSearchTerm) select file; filteredLogs = filteredLogs.Union(filesWithErrors).ToList(); } if (checkedFilesWithWarn.Checked) { IEnumerable <FileInfo> filesWithWarnings = from file in allLogs let fileText = GetFileText(file.FullName) where fileText.Contains(warningSearchTerm) select file; filteredLogs = filteredLogs.Union(filesWithWarnings).ToList(); } List <FileInfo> logsToShow = filteredLogs.Count > 0 ? filteredLogs : allLogs; logsToShow = logsToShow.OrderByDescending(a => a.Name).ToList(); foreach (FileInfo log in logsToShow) { listBoxViewLogFiles.Items.Add(log.Name); } // restore user selection, if it stil lexists if (selectedIndex >= 0 && !string.IsNullOrEmpty(selectedIndexValue)) { int indexFound = -1; indexFound = listBoxViewLogFiles.FindStringExact(selectedIndexValue); if (indexFound >= 0) { listBoxViewLogFiles.SelectedIndex = indexFound; } } }