Beispiel #1
0
        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");
        }
Beispiel #2
0
 public ScopeDelegateLoggerProvider(ScopeDelegateLogger logger)
 {
     _logger = logger;
 }