/// <summary> /// Ответ на запрос о получении записей журнала событий /// </summary> public void ResponseEventLogEntities(ResponseEventLogEntriesDto dto) { EventLogEntriesResponse(this, new DtoEventArgs <ResponseEventLogEntriesDto>(dto)); }
/// <summary> /// Получить записи журнала событий /// </summary> public async void RequestEventLogEntries(RequestEventLogEntriesDto dto) { CancelEventLogEntriesRequestTokenSource = new CancellationTokenSource(); var callback = GetCurrentCallBack(); Console.WriteLine(string.Format("RequestEventLogEntries {0}", dto.Id)); var response = new ResponseEventLogEntriesDto() { Id = dto.Id }; var cancelToken = CancelEventLogEntriesRequestTokenSource.Token; try { response.LogEntries = await Task.Run(() => { var result = new List <EventLogEntryDto>(); using (var logger = new EventLog(dto.Log)) { foreach (var entry in logger.Entries.Cast <EventLogEntry>()) { if (cancelToken.IsCancellationRequested) { break; } var filter = dto.Filter; if (filter != null) { if (filter.EntryType != EventLogEntryTypeFilter.None) { if ((int)entry.EntryType != (int)filter.EntryType) { continue; } } if (filter.InstanceId > 0) { if (entry.InstanceId != filter.InstanceId) { continue; } } if (!string.IsNullOrEmpty(filter.MachineName) && entry.MachineName != null) { if (!entry.MachineName.Contains(filter.MachineName)) { continue; } } if (!string.IsNullOrEmpty(filter.MessagePart) && entry.Message != null) { if (!entry.Message.Contains(filter.MessagePart)) { continue; } } if (filter.TimeGeneratedFrom > DateTime.MinValue || filter.TimeGeneratedTo < DateTime.MaxValue) { var min = filter.TimeGeneratedFrom < filter.TimeGeneratedTo ? filter.TimeGeneratedFrom : filter.TimeGeneratedTo; var max = filter.TimeGeneratedTo > filter.TimeGeneratedFrom ? filter.TimeGeneratedTo : filter.TimeGeneratedFrom; if (entry.TimeGenerated < min || entry.TimeGenerated > max) { continue; } } } var logEntry = new EventLogEntryDto() { EntryType = (EventLogEntryTypeFilter)entry.EntryType, InstanceId = entry.InstanceId, MachineName = entry.MachineName, Message = entry.Message, TimeGenerated = entry.TimeGenerated }; result.Add(logEntry); } } return(result); }, cancelToken ); } catch (Exception ex) { response.ErrorMessage = ex.Message; } Console.WriteLine(string.Format("RequestEventLogEntries {0} Complete {1}", response.Id, response.ErrorMessage)); if (!CancelEventLogEntriesRequestTokenSource.IsCancellationRequested) { Run(callback, c => c.ResponseEventLogEntities(response)); } }