public void AddEntry(Guid correlationId, EventLogEntryDto entry)
 {
     if (!_eventLog.ContainsKey(correlationId))
     {
         _eventLog[correlationId] = new List <EventLogEntryDto>();
     }
     _eventLog[correlationId].Add(entry);
 }
Exemplo n.º 2
0
        /// <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));
            }
        }