diff --git a/src/Agent/NewRelic/Agent/Extensions/Providers/Wrapper/MicrosoftExtensionsLogging/MicrosoftLoggingWrapper.cs b/src/Agent/NewRelic/Agent/Extensions/Providers/Wrapper/MicrosoftExtensionsLogging/MicrosoftLoggingWrapper.cs index 295d71301..24e30a2ba 100644 --- a/src/Agent/NewRelic/Agent/Extensions/Providers/Wrapper/MicrosoftExtensionsLogging/MicrosoftLoggingWrapper.cs +++ b/src/Agent/NewRelic/Agent/Extensions/Providers/Wrapper/MicrosoftExtensionsLogging/MicrosoftLoggingWrapper.cs @@ -81,14 +81,13 @@ private void RecordLogMessage(MethodCall methodCall, MEL.ILogger logger, IAgent var getLoggersArrayFunc = _getLoggersArray ??= VisibilityBypasser.Instance.GeneratePropertyAccessor(logger.GetType(), "ScopeLoggers"); var loggers = getLoggersArrayFunc(logger); - // Get the first ScopeLogger in the array (logger.ScopeLoggers[0]) - // If there is more than one scope logger, they've all received the same data, so the first - // one should be fine - object firstLogger = loggers.GetValue(0); - - // Get the scope provider from that logger (logger.ScopeLoggers[0].ExternalScopeProvider) - var scopeProviderPI = _scopeProviderPropertyInfo ??= firstLogger.GetType().GetProperty("ExternalScopeProvider"); - var scopeProvider = scopeProviderPI.GetValue(firstLogger) as IExternalScopeProvider; + // Get the last ScopeLogger in the array (logger.ScopeLoggers[loggers.Length-1]) + // If there is more than one scope logger, the last logger is the one with the ExternalScopeProvider set + object lastLogger = loggers.GetValue(loggers.Length-1); + + // Get the scope provider from that logger (logger.ScopeLoggers[loggers.Length-1].ExternalScopeProvider) + var scopeProviderPI = _scopeProviderPropertyInfo ??= lastLogger.GetType().GetProperty("ExternalScopeProvider"); + var scopeProvider = scopeProviderPI.GetValue(lastLogger) as IExternalScopeProvider; // Get the context data var harvestedKvps = new Dictionary();