public static IPipelines RegisterCosmosLogging(this IPipelines pipelines, TinyIoCContainer container, Action <ILogServiceCollection> config) { if (pipelines == null) { throw new ArgumentNullException(nameof(pipelines)); } if (container == null) { throw new ArgumentNullException(nameof(container)); } var serviceImpl = new NancyLogServiceCollection(); config?.Invoke(serviceImpl); RegisterCoreComponents(serviceImpl); BuildSoloContainer(serviceImpl); UpdateStaticProvider(); UpdateTinyIoCContainer(container); NancyPipelinesHook.RegisterLoggingHandlers(pipelines); return(pipelines); }
private static void RegisterTraceIdGenerator(this NancyLogServiceCollection serviceImpl) { serviceImpl.AddDependency(s => s.TryAdd(ServiceDescriptor.Scoped <FallbackTraceIdAccessor, FallbackTraceIdAccessor>())); if (!ExpectedTraceIdGeneratorName.HasValue()) { serviceImpl.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 RegisterCoreComponents(NancyLogServiceCollection serviceImpl) { serviceImpl.AddDependency(s => s.AddSingleton <ILoggingServiceProvider, NancyLoggingServiceProvider>()); serviceImpl.BuildConfiguration(); serviceImpl.ActiveSinkSettings(); serviceImpl.ActiveOriginConfiguration(); serviceImpl.AddDependency(s => s.AddSingleton(Options.Create((LoggingOptions)serviceImpl.ExposeLogSettings()))); serviceImpl.AddDependency(s => s.AddSingleton(serviceImpl.ExposeLoggingConfiguration())); }
private static void RegisterCoreComponents(NancyLogServiceCollection serviceImpl) { serviceImpl.AddDependency(s => s.AddSingleton <ILoggingServiceProvider, NancyLoggingServiceProvider>()); serviceImpl.AddDependency(s => s.AddSingleton <IPropertyFactoryAccessor, ShortcutPropertyFactoryAccessor>()); serviceImpl.BuildConfiguration(); serviceImpl.ActiveSinkSettings(); serviceImpl.ActiveOriginConfiguration(); serviceImpl.RegisterTraceIdGenerator(); serviceImpl.AddDependency(s => s.AddSingleton(Options.Create((LoggingOptions)serviceImpl.ExposeLogSettings()))); serviceImpl.AddDependency(s => s.AddSingleton(serviceImpl.ExposeLoggingConfiguration())); }
private static void RegisterEnricherComponents(NancyLogServiceCollection serviceImpl) { serviceImpl.ActiveLogEventEnrichers(); }