DiagnosticListener.Subscribe 方法

定义

这些方法允许添加订阅者,其中一些方法提供可选的事件筛选方法。

重载

Subscribe(IObserver<KeyValuePair<String,Object>>)

添加订阅者。

Subscribe(IObserver<KeyValuePair<String,Object>>, Func<String,Object,Object,Boolean>)

添加一个订阅者,根据事件名称和最多两个上下文对象筛选事件(可选)。

Subscribe(IObserver<KeyValuePair<String,Object>>, Predicate<String>)

添加一个订阅者,根据事件名称筛选事件(可选)。

Subscribe(IObserver<KeyValuePair<String,Object>>, Func<String,Object,Object,Boolean>, Action<Activity,Object>, Action<Activity,Object>)

添加一个订阅者,根据事件名称和最多两个上下文对象筛选事件(可选),并指定提供程序在进程外部导入或导出活动时调用的方法。

Subscribe(IObserver<KeyValuePair<String,Object>>)

Source:
DiagnosticListener.cs
Source:
DiagnosticListener.cs
Source:
DiagnosticListener.cs

添加订阅者。

public:
 virtual IDisposable ^ Subscribe(IObserver<System::Collections::Generic::KeyValuePair<System::String ^, System::Object ^>> ^ observer);
public virtual IDisposable Subscribe (IObserver<System.Collections.Generic.KeyValuePair<string,object?>> observer);
public IDisposable Subscribe (IObserver<System.Collections.Generic.KeyValuePair<string,object>> observer);
public virtual IDisposable Subscribe (IObserver<System.Collections.Generic.KeyValuePair<string,object>> observer);
abstract member Subscribe : IObserver<System.Collections.Generic.KeyValuePair<string, obj>> -> IDisposable
override this.Subscribe : IObserver<System.Collections.Generic.KeyValuePair<string, obj>> -> IDisposable
Public Overridable Function Subscribe (observer As IObserver(Of KeyValuePair(Of String, Object))) As IDisposable
Public Function Subscribe (observer As IObserver(Of KeyValuePair(Of String, Object))) As IDisposable

参数

observer
IObserver<KeyValuePair<String,Object>>

订阅者。

返回

对允许侦听器在 DiagnosticSource 发送完通知前停止接收这些通知的接口的引用。

实现

适用于

Subscribe(IObserver<KeyValuePair<String,Object>>, Func<String,Object,Object,Boolean>)

Source:
DiagnosticListener.cs
Source:
DiagnosticListener.cs
Source:
DiagnosticListener.cs

添加一个订阅者,根据事件名称和最多两个上下文对象筛选事件(可选)。

public:
 virtual IDisposable ^ Subscribe(IObserver<System::Collections::Generic::KeyValuePair<System::String ^, System::Object ^>> ^ observer, Func<System::String ^, System::Object ^, System::Object ^, bool> ^ isEnabled);
public virtual IDisposable Subscribe (IObserver<System.Collections.Generic.KeyValuePair<string,object?>> observer, Func<string,object?,object?,bool>? isEnabled);
public virtual IDisposable Subscribe (IObserver<System.Collections.Generic.KeyValuePair<string,object>> observer, Func<string,object,object,bool> isEnabled);
abstract member Subscribe : IObserver<System.Collections.Generic.KeyValuePair<string, obj>> * Func<string, obj, obj, bool> -> IDisposable
override this.Subscribe : IObserver<System.Collections.Generic.KeyValuePair<string, obj>> * Func<string, obj, obj, bool> -> IDisposable
Public Overridable Function Subscribe (observer As IObserver(Of KeyValuePair(Of String, Object)), isEnabled As Func(Of String, Object, Object, Boolean)) As IDisposable

参数

observer
IObserver<KeyValuePair<String,Object>>

订阅者。

isEnabled
Func<String,Object,Object,Boolean>

一个委托,它根据事件名称和最多两个上下文对象筛选事件(可为 null),如果不需要事件筛选器,则为 null

返回

对允许侦听器在 DiagnosticSource 发送完通知前停止接收这些通知的接口的引用。

注解

如果 isEnabled 不是 null,则表示为了提高效率,可以跳过某些不感兴趣的事件。

特定检测站点可以选择调用一个或多个 IsEnabled 重载,在该重载中,它传递事件的名称以及最多两个其他 (检测站点特定的) 对象作为参数。 如果进行了上述 IsEnabled 任一调用,则会使用传递的值调用此 isEnabled 谓词, (如果使用较短的重载, null 则为缺少的上下文对象) 传递。

这样,任何特定检测站点都能够将最多两条信息传递给订阅者,以便执行复杂、高效的筛选。 这需要在检测站点和订阅者代码之间有更多的耦合。

预期特定检测站点可能会为同一事件调用不同的 重载 IsEnabled ,首先调用 IsEnabled(String),后者使用两 null 个上下文对象调用筛选器。 如果 isEnabled 返回 true,它将再次调用上下文对象。 筛选器 isEnabled 的设计应考虑到这一点。

请注意, isEnabled 谓词是一种可选优化,允许检测站点避免设置有效负载,并在没有订阅者关心有效负载时调用 Write(String, Object) 。 具体而言,检测站点可以选择忽略 IsEnabled 谓词, (不) 调用谓词,而只需调用 Write(String, Object)。 因此,如果订阅者需要筛选,则需要自行执行。

如果此参数为 null,则不会 (返回 true) 的所有重载IsEnabled执行筛选。

适用于

Subscribe(IObserver<KeyValuePair<String,Object>>, Predicate<String>)

Source:
DiagnosticListener.cs
Source:
DiagnosticListener.cs
Source:
DiagnosticListener.cs

添加一个订阅者,根据事件名称筛选事件(可选)。

public:
 virtual IDisposable ^ Subscribe(IObserver<System::Collections::Generic::KeyValuePair<System::String ^, System::Object ^>> ^ observer, Predicate<System::String ^> ^ isEnabled);
public virtual IDisposable Subscribe (IObserver<System.Collections.Generic.KeyValuePair<string,object?>> observer, Predicate<string>? isEnabled);
public virtual IDisposable Subscribe (IObserver<System.Collections.Generic.KeyValuePair<string,object>> observer, Predicate<string> isEnabled);
abstract member Subscribe : IObserver<System.Collections.Generic.KeyValuePair<string, obj>> * Predicate<string> -> IDisposable
override this.Subscribe : IObserver<System.Collections.Generic.KeyValuePair<string, obj>> * Predicate<string> -> IDisposable
Public Overridable Function Subscribe (observer As IObserver(Of KeyValuePair(Of String, Object)), isEnabled As Predicate(Of String)) As IDisposable

参数

observer
IObserver<KeyValuePair<String,Object>>

订阅者。

isEnabled
Predicate<String>

一个委托,它根据其名称 (String) 筛选事件。 如果已启用事件,则委托应返回 true

返回

对允许侦听器在 DiagnosticSource 发送完通知前停止接收这些通知的接口的引用。

注解

如果 isEnabled 不是 null,则某些事件没有兴趣,可以跳过以提高效率。 谓 isEnabled 词是一种可选优化,允许检测站点避免设置有效负载并在没有订阅者关心时调用 Write(String, Object) 。 具体而言,检测站点可以选择忽略 IsEnabled() 谓词, (不) 调用谓词,而只是调用 Write(String, Object)。 因此,如果订阅服务器需要筛选,则需要自行执行。

如果 isEnablednull,则不 (返回 true) 的所有重载IsEnabled执行筛选。

适用于

Subscribe(IObserver<KeyValuePair<String,Object>>, Func<String,Object,Object,Boolean>, Action<Activity,Object>, Action<Activity,Object>)

Source:
DiagnosticSourceActivity.cs
Source:
DiagnosticSourceActivity.cs
Source:
DiagnosticSourceActivity.cs

添加一个订阅者,根据事件名称和最多两个上下文对象筛选事件(可选),并指定提供程序在进程外部导入或导出活动时调用的方法。

public virtual IDisposable Subscribe (IObserver<System.Collections.Generic.KeyValuePair<string,object?>> observer, Func<string,object?,object?,bool>? isEnabled, Action<System.Diagnostics.Activity,object?>? onActivityImport = default, Action<System.Diagnostics.Activity,object?>? onActivityExport = default);
public virtual IDisposable Subscribe (IObserver<System.Collections.Generic.KeyValuePair<string,object>> observer, Func<string,object,object,bool> isEnabled, Action<System.Diagnostics.Activity,object> onActivityImport = default, Action<System.Diagnostics.Activity,object> onActivityExport = default);
abstract member Subscribe : IObserver<System.Collections.Generic.KeyValuePair<string, obj>> * Func<string, obj, obj, bool> * Action<System.Diagnostics.Activity, obj> * Action<System.Diagnostics.Activity, obj> -> IDisposable
override this.Subscribe : IObserver<System.Collections.Generic.KeyValuePair<string, obj>> * Func<string, obj, obj, bool> * Action<System.Diagnostics.Activity, obj> * Action<System.Diagnostics.Activity, obj> -> IDisposable
Public Overridable Function Subscribe (observer As IObserver(Of KeyValuePair(Of String, Object)), isEnabled As Func(Of String, Object, Object, Boolean), Optional onActivityImport As Action(Of Activity, Object) = Nothing, Optional onActivityExport As Action(Of Activity, Object) = Nothing) As IDisposable

参数

observer
IObserver<KeyValuePair<String,Object>>

订阅者。

isEnabled
Func<String,Object,Object,Boolean>

一个委托,它根据事件名称和最多两个上下文对象筛选事件(可为 null),如果不需要事件筛选器,则为 null

onActivityImport
Action<Activity,Object>

一个操作委托,用于接收由外部事件影响的活动以及表示传入请求的对象。

onActivityExport
Action<Activity,Object>

一个操作委托,用于接收由外部事件影响的活动以及表示传出请求的对象。

返回

对允许侦听器在 DiagnosticSource 发送完通知前停止接收这些通知的接口的引用。

注解

如果 isEnabled 为非 null,则可以跳过一些不感兴趣的事件,以提高效率。

还可以提供“onActivityImport”和“onActivityExport”方法,当提供程序从进程外部导入或导出活动时调用 (例如,从 HTTP 请求) 。 这些方法在导入或导出活动后调用,可用于修改活动或传出请求以添加策略。

适用于