Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions src/OpenTelemetry/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,10 @@ Notes](../../RELEASENOTES.md).
* Fix resource leak in batch and periodic exporting task workers for Blazor/WASM.
([#7069](https://github.com/open-telemetry/opentelemetry-dotnet/pull/7069))

* Fixed `LogRecord.LogLevel` to preserve `LogLevel.None` and handle
unspecified or out-of-range severities without returning invalid enum values.
([#7092](https://github.com/open-telemetry/opentelemetry-dotnet/pull/7092))

## 1.15.2

Released 2026-Apr-08
Expand Down
16 changes: 9 additions & 7 deletions src/OpenTelemetry/Logs/LogRecord.cs
Comment thread
martincostello marked this conversation as resolved.
Original file line number Diff line number Diff line change
Expand Up @@ -189,16 +189,18 @@ public LogLevel LogLevel
{
get
{
if (this.Data.Severity.HasValue)
if (!this.Data.Severity.HasValue)
{
var severity = (uint)this.Data.Severity.Value;
if (severity is >= 1 and <= 24)
{
return (LogLevel)((severity - 1) / 4);
}
return LogLevel.None;
}

return LogLevel.Trace;
var severity = (uint)this.Data.Severity.Value;
Comment thread
ysolomchenko marked this conversation as resolved.
Outdated
if (severity is >= 1 and <= 24)
{
return (LogLevel)((severity - 1) / 4);
}

return LogLevel.None;
}

set => OpenTelemetryLogger.SetLogRecordSeverityFields(ref this.Data, value);
Expand Down
17 changes: 15 additions & 2 deletions test/OpenTelemetry.Tests/Logs/LogRecordTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -922,8 +922,8 @@ public void IncludeStateTest()
}

[Theory]
[InlineData((int)LogRecordSeverity.Unspecified, LogLevel.Trace)]
[InlineData(int.MaxValue, LogLevel.Trace)]
[InlineData((int)LogRecordSeverity.Unspecified, LogLevel.None)]
[InlineData(int.MaxValue, LogLevel.None)]
[InlineData((int)LogRecordSeverity.Trace, LogLevel.Trace, (int)LogRecordSeverity.Trace)]
[InlineData((int)LogRecordSeverity.Trace2, LogLevel.Trace, (int)LogRecordSeverity.Trace)]
[InlineData((int)LogRecordSeverity.Trace3, LogLevel.Trace, (int)LogRecordSeverity.Trace)]
Expand Down Expand Up @@ -968,6 +968,19 @@ public void SeverityLogLevelTest(int logSeverity, LogLevel logLevel, int? transf
}
}

[Fact]
public void LogLevelNoneRoundTripsWhenSeverityUnset()
{
var logRecord = new LogRecord
{
LogLevel = LogLevel.None,
};

Assert.Null(logRecord.Severity);
Assert.Null(logRecord.SeverityText);
Assert.Equal(LogLevel.None, logRecord.LogLevel);
}

[Fact]
public void LogRecordInstrumentationScopeTest()
{
Expand Down
Loading