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;
}