public void CreateDefaultBuilder_EnablesActivityTracking() { var parentActivity = new Activity("ParentActivity"); parentActivity.Start(); var activity = new Activity("ChildActivity"); activity.Start(); var id = activity.Id; var logger = new ScopeDelegateLogger((scopeObjectList) => { Assert.Equal(1, scopeObjectList.Count); var activityDictionary = (scopeObjectList.FirstOrDefault() as IEnumerable <KeyValuePair <string, object> >) .ToDictionary(x => x.Key, x => x.Value); switch (activity.IdFormat) { case ActivityIdFormat.Hierarchical: Assert.Equal(activity.Id, activityDictionary["SpanId"]); Assert.Equal(activity.RootId, activityDictionary["TraceId"]); Assert.Equal(activity.ParentId, activityDictionary["ParentId"]); break; case ActivityIdFormat.W3C: Assert.Equal(activity.SpanId.ToHexString(), activityDictionary["SpanId"]); Assert.Equal(activity.TraceId.ToHexString(), activityDictionary["TraceId"]); Assert.Equal(activity.ParentSpanId.ToHexString(), activityDictionary["ParentId"]); break; } }); var loggerProvider = new ScopeDelegateLoggerProvider(logger); using var host = Host.CreateDefaultBuilder() .ConfigureLogging(logging => { logging.AddProvider(loggerProvider); }) .Build(); logger.LogInformation("Dummy log"); }
public ScopeDelegateLoggerProvider(ScopeDelegateLogger logger) { _logger = logger; }