private static void AddTraceIdGenerator(this ConsoleLogServiceCollection servicesImpl) { servicesImpl.AddDependency(s => s.TryAdd(ServiceDescriptor.Scoped <FallbackTraceIdAccessor, FallbackTraceIdAccessor>())); if (!ExpectedTraceIdGeneratorName.HasValue()) { servicesImpl.AddDependency(s => s.TryAdd(ServiceDescriptor.Scoped(__traceIdGeneratorFactory))); ExpectedTraceIdGeneratorName.Value = nameof(SystemTraceIdGenerator); } // ReSharper disable once InconsistentNaming ILogTraceIdGenerator __traceIdGeneratorFactory(IServiceProvider provider) { //1. Get traceIdAccessor and fallbackTraceIdAccessor from ServiceProvider var traceIdAccessor = provider.GetService <TraceIdAccessor>(); var fallbackAccessor = provider.GetRequiredService <FallbackTraceIdAccessor>(); //2. Create a new instance of SystemTraceIdGenerator var generator = new SystemTraceIdGenerator(traceIdAccessor, fallbackAccessor); //3. Scoped update LogTraceIdGenerator.ScopedUpdate(generator); //4. Done, and return. return(generator); } }
private static void BuildAndActiveConfiguration(this ConsoleLogServiceCollection services) { services.BuildConfiguration(); services.ActiveSinkSettings(); services.ActiveOriginConfiguration(); services.AddDependency(s => s.TryAddSingleton(Options.Create((LoggingOptions)services.ExposeLogSettings()))); services.AddDependency(s => s.TryAddSingleton(services.ExposeLoggingConfiguration())); }