Closed konjac closed 1 week ago
OpenTelemetry
.net 8
I want to use log processor to add enrich attributes. However, it looks like BaseProcessor.OnStart is never invoked.
After checking code, I believe it is a bug in OpenTelemetryLogger.cs. processor.OnEnd has no paired processor.Start.
I proposed this PR #5835 to make OnStart and OnEnd paired.
using Microsoft.Extensions.Logging; using OpenTelemetry; using OpenTelemetry.Logs; internal class Program { private static void Main(string[] args) { var loggerFactory = LoggerFactory.Create( builder => { builder.AddOpenTelemetry(logging => { logging.AddProcessor(new MyProcessor()); logging.AddConsoleExporter(); }); }); var logger = loggerFactory.CreateLogger<Program>(); logger.LogInformation("hello!"); logger.LogInformation("CountStart={}, CountEnd={}", MyProcessor.CountStart, MyProcessor.CountEnd); } } class MyProcessor : BaseProcessor<LogRecord> { public static int CountEnd = 0; public static int CountStart = 0; public override void OnEnd(LogRecord data) { ++CountEnd; Console.WriteLine("On End"); base.OnEnd(data); } public override void OnStart(LogRecord data) { ++CountStart; Console.WriteLine("On End"); base.OnStart(data); } }
CountStart=1, CountEnd=1
CountStart=0, CountEnd=1
No response
This is by-design. Logs only have OnEnd, that can be used for enrichemnt/filtering etc. https://github.com/open-telemetry/opentelemetry-dotnet/tree/main/docs/logs/extending-the-sdk#processor
Package
OpenTelemetry
Package Version
Runtime Version
.net 8
Description
I want to use log processor to add enrich attributes. However, it looks like BaseProcessor.OnStart is never invoked.
After checking code, I believe it is a bug in OpenTelemetryLogger.cs. processor.OnEnd has no paired processor.Start.
I proposed this PR #5835 to make OnStart and OnEnd paired.
Steps to Reproduce
Expected Result
CountStart=1, CountEnd=1
Actual Result
CountStart=0, CountEnd=1
Additional Context
No response