public ILogMessageViewModel CreateLogMessageViewModel(string logType, string message, string owner, DateTime dateTime) { ILogMessageViewModel logMessageViewModel = _container.Resolve <ILogMessageViewModel>(); logMessageViewModel.LogMessageType = logType; logMessageViewModel.Message = message; logMessageViewModel.Owner = owner; logMessageViewModel.MessageDateTime = dateTime; return(logMessageViewModel); }
public async Task <IEnumerable <ILogMessageViewModel> > LoadLogMessageViewModels() { ConcurrentBag <ILogMessageViewModel> logMessageViewModels = new ConcurrentBag <ILogMessageViewModel>(); await Task.Run((() => { DirectoryInfo directoryInfo = new DirectoryInfo(Environment.CurrentDirectory); var allFiles = directoryInfo.GetFiles(); string nlog_file_pattern = @"nlog_[0-3][0-9]_[0-9]{4}_app" + _settingsService.ApplicationNumber.ToString() + ".txt"; const string DATE_TIME_PATTERN = @"\d{2}\.\d{2}\.\d{4}\s\d{1,2}:\d{2}:\d{2}"; foreach (var file in allFiles) { if (Regex.IsMatch(file.Name, nlog_file_pattern)) { var allLogs = File.ReadAllLines(file.Name, Encoding.Unicode).ToList(); Parallel.ForEach(allLogs, ((log) => { if (Regex.IsMatch(log, DATE_TIME_PATTERN)) { var dateTimeString = Regex.Match(log, DATE_TIME_PATTERN).Value; var dateTime = Convert.ToDateTime(dateTimeString, new CultureInfo("de-DE")); var matchCollection = Regex.Matches(log, "\\[([^\\[\\]]+)\\]"); if (matchCollection.Count == 3) { string messageTypeString = matchCollection[2].Value.Replace("[", String.Empty) .Replace("]", String.Empty); string owner = matchCollection[0].Value.Replace("[", String.Empty) .Replace("]", String.Empty); string message = log.Remove(0, log.LastIndexOf("]") + 1); ILogMessageViewModel logMessageViewModel = _logMessageViewModelFactory.CreateLogMessageViewModel(messageTypeString, message, owner, dateTime); logMessageViewModels.Add(logMessageViewModel); } } })); } } })); return(new ObservableCollection <ILogMessageViewModel>(logMessageViewModels)); }