У меня есть компонент, который используется различными приложениями. В этом компоненте нам может потребоваться регистрация, поэтому я решил использовать 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. Но я не понимаю, что я делаю не так.
Заранее благодарен за любую информацию, которую вы можете мне дать!