private UIFilterSettings CreateUIFilterSettings() { var settUIFilters = new UIFilterSettings(); settUIFilters.IncludePresenceMsgs = this.cbAutoIncludePresense.Checked; settUIFilters.ExcludeThsMonitorMessages = true; if (cbAutoFilterCallId.Checked) { string sCallIdRegex = @"Call-ID:\s"; if (tbAutoFilterCallId.Text.Contains(",")) { sCallIdRegex += string.Concat( "(", string.Join("|", tbAutoFilterCallId.Text.Split(',').Select(s => Regex.Escape(s.Trim())).ToArray()), ")"); } else { sCallIdRegex += tbAutoFilterCallId.Text; } settUIFilters.CallIdFilterText = sCallIdRegex; } settUIFilters.DateTimeFrom = cbDateFrom.Checked ? DateTime.ParseExact(dtpDateTimeFrom.Text, "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal) : (DateTime?)null; settUIFilters.DateTimeTo = cbDateTo.Checked ? DateTime.ParseExact(dtpDateTo.Text, "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal) : (DateTime?)null; settUIFilters.IncludeSIP200 = cbIncludeSIP200OK.Checked; return(settUIFilters); }
public static void ExtractMessagesFromFiles(IEnumerable <ACSLogFile> mLogsToProcess, string directory, List <Message> messages, UIFilterSettings settUIFilters, bool doCreateSeparateMessageLists, Action <string> uiSyncAction) { foreach (var logFile in mLogsToProcess) { settUIFilters.FilterRTSMMessages = (logFile.SourceType == SourceType.RTSM_in_thslog); var processorSettings = new LogProcessorSettings() { LogFile = logFile, UIFS = settUIFilters, CreateSeparateMessageLists = doCreateSeparateMessageLists }; var lp = new LogProcessor(); string resultPath = string.Empty; int prevMessagesCount = messages.Count; try { resultPath = lp.ProcessLogFile(directory, processorSettings, m => messages.Add(m)); var messagesProcessedCount = messages.Count - prevMessagesCount; var updateStatusText = string.Format("Processed file {0}.{2}{1}{2}", logFile.LogFileName, messagesProcessedCount == 0 ? string.Format("No {0} messages found.", logFile.SourceType) : string.Format("Parsed {0} {1} message(s).", messagesProcessedCount, logFile.SourceType), Environment.NewLine); if (processorSettings.CreateSeparateMessageLists) { updateStatusText += string.Format("Generated file:{0}{1}{0}", Environment.NewLine, resultPath); } updateStatusText += Environment.NewLine; uiSyncAction(updateStatusText); } catch (Exception ex) { throw new ApplicationException( string.Format("An error occured when processing file{0}{1}{2}{3}", logFile.LogFileName, Environment.NewLine, "Error:", ex) , ex); } System.GC.Collect(); GC.WaitForPendingFinalizers(); } }