I have a Blazor Hybrid application, where I'm attempting to use OpenTelemetry + NLog to log client information to a file on disk. I'm trying to get the ActivitySource entries to log to my log file, and console, so I can see the timespan and other information. I need some help getting everything configured correctly (and reducing the what information is being logged... (see info below).
Below is my setup:
Basic Info
Using .NET8, with a Blazor Hybrid project. There is no appsettings.json entries for open telemetry. NLog logging to the file is working as desired. OT is logging to the console... but it's not useful information to me (currently) and the app is very slow when enabled:
LogRecord.Timestamp: 2024-05-13T14:21:06.2594275ZLogRecord.CategoryName: Microsoft.AspNetCore.Components.RenderTree.RendererLogRecord.Severity: DebugLogRecord.SeverityText: DebugLogRecord.Body: Rendering component {ComponentId} of type {ComponentType}LogRecord.Attributes (Key:Value): ComponentId: 82 ComponentType: MudBlazor.MudOverlay OriginalFormat (a.k.a Body): Rendering component {ComponentId} of type {ComponentType}LogRecord.EventId: 3LogRecord.EventName: RenderingComponentResource associated with LogRecord:service.name: <APP NAME>service.instance.id: 32a40416-826e-444a-a138-485d89f3ed32telemetry.sdk.name: opentelemetrytelemetry.sdk.language: dotnettelemetry.sdk.version: 1.8.1LogRecord.Timestamp: 2024-05-13T14:21:06.2778115ZLogRecord.CategoryName: Microsoft.AspNetCore.Components.RenderTree.RendererLogRecord.Severity: DebugLogRecord.SeverityText: DebugLogRecord.Body: Rendering component {ComponentId} of type {ComponentType}LogRecord.Attributes (Key:Value): ComponentId: 83 ComponentType: MudBlazor.MudElement OriginalFormat (a.k.a Body): Rendering component {ComponentId} of type {ComponentType}LogRecord.EventId: 3LogRecord.EventName: RenderingComponentThe ActivitySource is being created in a helper class that also implements IDisposable and is doing all the necessary disposal, etc. If the class is needed, I will edit to show, but the activity is created like so:
public Telemetry([CallerMemberName] string methodName = "") { _MethodName = methodName; _Activity = TelemetryConstants.ActivitySource.StartActivity(_MethodName); AddTag("operation.datetimeoffset.utcnow.begin", DateTimeOffset.UtcNow.ToString(_DateFormat)); }MauiProgram.cs
var builder = MauiApp.CreateBuilder();...builder.Services.AddOpenTelemetry() .ConfigureResource(resource => resource.AddService(serviceName: TelemetryConstants.ServiceName, serviceVersion: TelemetryConstants.ServiceVersion) ) .WithTracing(tracing => { tracing .AddSource(TelemetryConstants.ServiceName) .AddConsoleExporter(options => { options.Targets = OpenTelemetry.Exporter.ConsoleExporterOutputTargets.Debug; }); }) .WithMetrics(builder => { builder.AddConsoleExporter(options => { options.Targets = OpenTelemetry.Exporter.ConsoleExporterOutputTargets.Debug; }); }) ;builder.Logging.ClearProviders();builder.Logging.SetMinimumLevel(LogLevel.Trace);builder.Logging.AddNLog();builder.Logging.AddOpenTelemetry(options =>{ options .SetResourceBuilder(ResourceBuilder.CreateDefault().AddService(TelemetryConstants.ServiceName)) .AddConsoleExporter(options => { options.Targets = OpenTelemetry.Exporter.ConsoleExporterOutputTargets.Debug; });});CSProj Package References
<ItemGroup><PackageReference Include="Microsoft.Maui.Controls" Version="8.0.21" /><PackageReference Include="Microsoft.Maui.Controls.Compatibility" Version="8.0.21" /><PackageReference Include="Microsoft.AspNetCore.Components.WebView.Maui" Version="8.0.21" /><PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="8.0.0" /><PackageReference Include="MudBlazor" Version="6.19.1" /><PackageReference Include="NLog" Version="5.3.2" /><PackageReference Include="NLog.Extensions.Logging" Version="5.3.11" /><PackageReference Include="NLog.Targets.MauiLog" Version="8.0.0" /><PackageReference Include="OpenTelemetry" Version="1.8.1" /><PackageReference Include="OpenTelemetry.Api" Version="1.8.1" /><PackageReference Include="OpenTelemetry.Exporter.Console" Version="1.8.1" /><PackageReference Include="OpenTelemetry.Extensions.Hosting" Version="1.8.1" /></ItemGroup>