public void TraceWithFilters()
        {
            string log    = "TraceWithFilters";
            string source = "Source" + nameof(TraceEventFormatAndParams);

            try
            {
                EventLog.CreateEventSource(source, log);
                using (var listener = new EventLogTraceListener(source))
                {
                    listener.Filter = new EventTypeFilter(SourceLevels.Critical);
                    listener.TraceData(null, source, TraceEventType.Information, 12, "string shouldn't be present");
                    EventLogEntry eventLogEntry = listener.EventLog.Entries.LastOrDefault();
                    if (eventLogEntry != null)
                    {
                        Assert.DoesNotContain("string shouldn't be present", eventLogEntry.Message);
                    }

                    listener.TraceData(null, source, TraceEventType.Information, 12, "string shouldn't be present", "neither should this");
                    eventLogEntry = listener.EventLog.Entries.LastOrDefault();
                    if (eventLogEntry != null)
                    {
                        Assert.DoesNotContain("string shouldn't be present", eventLogEntry.Message);
                        Assert.DoesNotContain("neither should this", eventLogEntry.Message);
                    }

                    listener.TraceEvent(null, source, TraceEventType.Information, 12, "trace an event casually", "one more", null);
                    eventLogEntry = listener.EventLog.Entries.LastOrDefault();
                    if (eventLogEntry != null)
                    {
                        Assert.DoesNotContain("trace an event casually", eventLogEntry.Message);
                        Assert.DoesNotContain("one more", eventLogEntry.Message);
                    }

                    listener.TraceEvent(null, source, TraceEventType.Information, 12, "i shouldn't be here");
                    eventLogEntry = listener.EventLog.Entries.LastOrDefault();
                    if (eventLogEntry != null)
                    {
                        Assert.DoesNotContain("i shouldn't be here", eventLogEntry.Message);
                    }
                }
            }
            finally
            {
                EventLog.DeleteEventSource(source);
                Helpers.RetryOnWin7(() => EventLog.Delete(log));
            }
        }
        public void TraceDataParamsData(object[] parameters)
        {
            string log    = "TraceDataParamsData";
            string source = "Source" + nameof(TraceDataParamsData);

            try
            {
                EventLog.CreateEventSource(source, log);
                using (var listener = new EventLogTraceListener(source))
                {
                    listener.TraceData(null, source, TraceEventType.Information, 1, parameters);
                    string expectedMessage = GetExpectedMessage(parameters);
                    ValidateLastEntryMessage(listener, expectedMessage, source);
                }
            }
            finally
            {
                EventLog.DeleteEventSource(source);
                Helpers.RetryOnWin7(() => EventLog.Delete(log));
            }
        }
 /// <summary>
 /// イベント情報をイベントログに書き込みます。
 /// </summary>
 /// <param name="eventCache"></param>
 /// <param name="source"></param>
 /// <param name="eventType"></param>
 /// <param name="id"></param>
 /// <param name="data"></param>
 public override void TraceData(TraceEventCache eventCache, string source, TraceEventType eventType, int id, object data)
 {
     _listener.TraceData(eventCache, source, eventType, EventId, data);
 }