无法注册 System.Diagnostics.Tracing.EventSource 的听众
Can't register listeners to System.Diagnostics.Tracing.EventSource
我有一个组件被不同的应用程序使用。
在这个组件中,我们可能需要日志记录,所以我想我会使用 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() returns false.
我怀疑侦听器未绑定到 EventSource。但是我真的不明白我做错了什么。
提前感谢您提供的任何信息!
我最终使用了 TraceSource 而不是 EventSource。
https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.tracesource?view=netcore-3.1
我有一个组件被不同的应用程序使用。 在这个组件中,我们可能需要日志记录,所以我想我会使用 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() returns false.
我怀疑侦听器未绑定到 EventSource。但是我真的不明白我做错了什么。
提前感谢您提供的任何信息!
我最终使用了 TraceSource 而不是 EventSource。 https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.tracesource?view=netcore-3.1