in src/Elastic.OpenTelemetry.Core/Configuration/Parsers/ConfigurationParser.cs [53:90]
public void ParseLogDirectory(ConfigCell<string?> logDirectory) =>
SetFromConfiguration(_configuration, logDirectory, StringParser);
public void ParseLogTargets(ConfigCell<LogTargets?> logTargets) =>
SetFromConfiguration(_configuration, logTargets, LogTargetsParser);
public void ParseLogLevel(ConfigCell<LogLevel?> logLevel, ref EventLevel eventLevel)
{
SetFromConfiguration(_configuration, logLevel, LogLevelParser);
if (!string.IsNullOrEmpty(LoggingSectionLogLevel) && logLevel.Source == ConfigSource.Default)
{
var level = LogLevelHelpers.ToLogLevel(LoggingSectionLogLevel!);
logLevel.Assign(level, ConfigSource.IConfiguration);
}
// this is used to ensure LoggingEventListener matches our log level by using the lowest
// of our configured loglevel or the default logging section's level.
var eventLogLevel = logLevel.Value;
if (!string.IsNullOrEmpty(LoggingSectionLogLevel))
{
var sectionLogLevel = LogLevelHelpers.ToLogLevel(LoggingSectionLogLevel!) ?? LogLevel.None;
if (sectionLogLevel < eventLogLevel)
eventLogLevel = sectionLogLevel;
}
eventLevel = eventLogLevel switch
{
LogLevel.Trace => EventLevel.Verbose,
LogLevel.Information => EventLevel.Informational,
LogLevel.Warning => EventLevel.Warning,
LogLevel.Error => EventLevel.Error,
LogLevel.Critical => EventLevel.Critical,
_ => EventLevel.Informational // fallback to info level
};
}