Fixed Sentry SDK has not been initialised when using ASP.NET Core, Serilog and OpenTelemetry #2911
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Resolves #2738
Problem
When using Sentry in an ASP.NET Core application, using SeriLog for logging and OpenTelemetry for tracing, the
SentrySpanProcessor
would throw an exception:sentry-dotnet/src/Sentry.OpenTelemetry/SentrySpanProcessor.cs
Lines 44 to 46 in 84925a9
Solution
When the logging backend is replaced by SeriLog,
SentrySdk.CurrentHub
doesn't get initialized until afterTracerProviderBuilderExtensions.AddSentry
gets run. I don't fully understand all the mechanics, to be honest - as far as I can tell, our ConfigureLogging code does actually get called, then it gets nuked by the SeriLog initialization, and finally our SDK gets initialized in by theSentryStartupFilter
.In any event, retrieving an
IHub
from DI rather than pulling it off the SentrySdk static class ensures we are always able to resolve this (regardless of whether the MEL backend has been replaced or not).I'd love a better explanation of what's going on here, if anyone else can provide one.
Backport