Не удается зарегистрировать слушателей System.Diagnostics.Tracing.EventSource - PullRequest
0 голосов
/ 19 февраля 2020

У меня есть компонент, который используется различными приложениями. В этом компоненте нам может потребоваться регистрация, поэтому я решил использовать EventSource.

Компонент netstandard2.0, приложение, использующее компонент: NET Framework 4.6.1.

Это то, что у меня есть в моем компоненте:

public class XEvents
{
    public const int BeforeSendingRequest = 1;
    public const int AfterSendingRequest = 2;
}

[EventSource(Name = "XEventSource")]
public class XEventSource : EventSource
{
    public static XEventSource Log = new XEventSource();

    [Event(XEvents.BeforeSendingRequest, Message = "Request: {0}", Level = EventLevel.Verbose, Keywords = EventKeywords.WdiDiagnostic)]
    public void BeforeSendingRequest(string request) { if (IsEnabled()) WriteEvent(XEvents.BeforeSendingRequest, request); }

    [Event(XEvents.AfterSendingRequestToCsam, Message = "Response: {0}", Level = EventLevel.Verbose, Keywords = EventKeywords.WdiDiagnostic)]
    public void AfterSendingRequest(string response) { if (IsEnabled()) WriteEvent(XEvents.AfterSendingRequest, response); }

}

И в приложении я добавил следующее в app.config:

  <system.diagnostics>
    <sources>
      <source name="NamespaceOfEventSource.XEventSource" switchValue="Verbose">
        <listeners>
          <add name="XEventSourceListener" />
        </listeners>
      </source>
    </sources>
    <sharedListeners>
      <add name="XEventSourceListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="X.log" traceOutputOptions="ProcessId, DateTime" />
    </sharedListeners>
    <trace autoflush="true" />
  </system.diagnostics>

Но когда я запускаю приложение внутри папки bin нет X.log. Когда я отлаживаю к источнику событий компонента, я вижу, что Enabled () возвращает false.

Я подозреваю, что слушатели не привязаны к EventSource. Но я не понимаю, что я делаю не так.

Заранее благодарен за любую информацию, которую вы можете мне дать!

1 Ответ

0 голосов
/ 17 апреля 2020

В итоге я использовал TraceSource вместо EventSource. https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.tracesource?view=netcore-3.1

...