MaG*_*aGu 10 .net c# system.diagnostics .net-core
activitySource.StartActivity我还没有找到返回非空活动的方法,这与DiagnosticSource.StartActivity行为相比是不同的。是预期的吗?我错过了一些明显的东西吗?
我可以看到文档说:“创建的活动对象,如果它有活动侦听器,或者如果没有事件侦听器,则为 null。” 下面的测试仍然失败,正确的初始化方法是什么ActivityListener?我使用的包是"System.Diagnostics.DiagnosticSource" Version="5.0.0".
[TestMethod]
public void Start_Not_Null_When_ActivityListener_Added_And_ShouldListenTo_Explicitly_Defined_Activity()
{
var activitySource = new ActivitySource("ActivitySourceName");
var activityListener = new ActivityListener
{
ShouldListenTo = s => true
};
ActivitySource.AddActivityListener(activityListener);
using var activity = activitySource.StartActivity($"MethodType:/Path");
Assert.IsNotNull(activity);
}
Run Code Online (Sandbox Code Playgroud)
MaG*_*aGu 14
这个测试在github的帮助下通过了:
[TestMethod]
public void Start_Not_Null_When_ActivityListener_Added_And_ShouldListenTo_Explicitly_Defined_Activity()
{
var activitySource = new ActivitySource("ActivitySourceName");
var activityListener = new ActivityListener
{
ShouldListenTo = s => true,
SampleUsingParentId = (ref ActivityCreationOptions<string> activityOptions) => ActivitySamplingResult.AllData,
Sample = (ref ActivityCreationOptions<ActivityContext> activityOptions) => ActivitySamplingResult.AllData
};
ActivitySource.AddActivityListener(activityListener);
using var activity = activitySource.StartActivity("MethodType:/Path");
Assert.IsNotNull(activity);
}
Run Code Online (Sandbox Code Playgroud)
小智 5
答案是您需要包含一个未设置为 None 的 ActivitySamplingResult。默认值似乎是无。MaGu 的答案有效,因为他们设置了:
Sample = (ref ActivityCreationOptions<ActivityContext> activityOptions) => ActivitySamplingResult.AllData
Run Code Online (Sandbox Code Playgroud)
StartActivity 方法的文档说它需要一个侦听器,但这并不是完整的故事,您需要一个活动侦听器来对 Activity 执行某些操作。将样本设置为 None 意味着它实际上不在
| 归档时间: |
|
| 查看次数: |
6271 次 |
| 最近记录: |