From d99307da34eb48c2b7df8d79a7109895772281e3 Mon Sep 17 00:00:00 2001 From: blouflashdb <45914736+blouflashdb@users.noreply.github.com> Date: Wed, 14 Sep 2022 02:19:36 +0200 Subject: [PATCH] Improve internal logging of LoggerProvider configuration (#3647) --- .../Internal/OpenTelemetrySdkEventSource.cs | 12 +++++++++ .../Logs/OpenTelemetryLoggerProvider.cs | 27 +++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/src/OpenTelemetry/Internal/OpenTelemetrySdkEventSource.cs b/src/OpenTelemetry/Internal/OpenTelemetrySdkEventSource.cs index 1dcd65fd94b..27520b4d943 100644 --- a/src/OpenTelemetry/Internal/OpenTelemetrySdkEventSource.cs +++ b/src/OpenTelemetry/Internal/OpenTelemetrySdkEventSource.cs @@ -396,6 +396,18 @@ public void ProcessorForceFlushInvoked(string processorType, bool result) this.WriteEvent(43, processorType, result); } + [Event(44, Message = "OpenTelemetryLoggerProvider event: '{0}'", Level = EventLevel.Verbose)] + public void OpenTelemetryLoggerProviderEvent(string message) + { + this.WriteEvent(44, message); + } + + [Event(45, Message = "ForceFlush invoked for OpenTelemetryLoggerProvider with timeoutMilliseconds = '{0}'.", Level = EventLevel.Verbose)] + public void OpenTelemetryLoggerProviderForceFlushInvoked(int timeoutMilliseconds) + { + this.WriteEvent(45, timeoutMilliseconds); + } + #if DEBUG public class OpenTelemetryEventListener : EventListener { diff --git a/src/OpenTelemetry/Logs/OpenTelemetryLoggerProvider.cs b/src/OpenTelemetry/Logs/OpenTelemetryLoggerProvider.cs index 0017f26a258..7b050b5aa3b 100644 --- a/src/OpenTelemetry/Logs/OpenTelemetryLoggerProvider.cs +++ b/src/OpenTelemetry/Logs/OpenTelemetryLoggerProvider.cs @@ -19,6 +19,7 @@ using System; using System.Collections; using System.Diagnostics; +using System.Text; using System.Threading; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; @@ -72,6 +73,8 @@ public OpenTelemetryLoggerProvider() internal OpenTelemetryLoggerProvider(OpenTelemetryLoggerOptions options, IServiceProvider? serviceProvider, bool ownsServiceProvider) { + OpenTelemetrySdkEventSource.Log.OpenTelemetryLoggerProviderEvent("Building OpenTelemetryLoggerProvider."); + Guard.ThrowIfNull(options); this.IncludeScopes = options.IncludeScopes; @@ -102,11 +105,14 @@ internal OpenTelemetryLoggerProvider(OpenTelemetryLoggerOptions options, IServic configurationActions[i](serviceProvider, this); } + OpenTelemetrySdkEventSource.Log.OpenTelemetryLoggerProviderEvent($"Number of actions configured = {configurationActions.Count}."); options.ConfigurationActions = null; } this.Resource = this.ResourceBuilder.Build(); this.ResourceBuilder = null; + + OpenTelemetrySdkEventSource.Log.OpenTelemetryLoggerProviderEvent("OpenTelemetryLoggerProvider built successfully."); } internal IExternalScopeProvider? ScopeProvider { get; private set; } @@ -173,6 +179,7 @@ public ILogger CreateLogger(string categoryName) /// public bool ForceFlush(int timeoutMilliseconds = Timeout.Infinite) { + OpenTelemetrySdkEventSource.Log.OpenTelemetryLoggerProviderForceFlushInvoked(timeoutMilliseconds); return this.Processor?.ForceFlush(timeoutMilliseconds) ?? true; } @@ -188,25 +195,43 @@ public bool ForceFlush(int timeoutMilliseconds = Timeout.Infinite) /// The supplied for chaining. public OpenTelemetryLoggerProvider AddProcessor(BaseProcessor processor) { + OpenTelemetrySdkEventSource.Log.OpenTelemetryLoggerProviderEvent("Started adding processor."); + Guard.ThrowIfNull(processor); processor.SetParentProvider(this); + StringBuilder processorAdded = new StringBuilder(); + if (this.threadStaticPool != null && this.ContainsBatchProcessor(processor)) { + OpenTelemetrySdkEventSource.Log.OpenTelemetryLoggerProviderEvent("Using shared thread pool."); + this.threadStaticPool = null; } if (this.Processor == null) { + processorAdded.Append("Setting processor to "); + processorAdded.Append(processor); + this.Processor = processor; } else if (this.Processor is CompositeProcessor compositeProcessor) { + processorAdded.Append("Adding processor "); + processorAdded.Append(processor); + processorAdded.Append(" to composite processor"); + compositeProcessor.AddProcessor(processor); } else { + processorAdded.Append("Creating new composite processor with processor "); + processorAdded.Append(this.Processor); + processorAdded.Append(" and adding new processor "); + processorAdded.Append(processor); + var newCompositeProcessor = new CompositeProcessor(new[] { this.Processor, @@ -216,6 +241,8 @@ public OpenTelemetryLoggerProvider AddProcessor(BaseProcessor process this.Processor = newCompositeProcessor; } + OpenTelemetrySdkEventSource.Log.OpenTelemetryLoggerProviderEvent($"Completed adding processor = \"{processorAdded}\"."); + return this; }