diff --git a/src/Components/Aspire.RabbitMQ.Client/RabbitMQEventSourceLogForwarder.cs b/src/Components/Aspire.RabbitMQ.Client/RabbitMQEventSourceLogForwarder.cs index f4f74d0f4e9..003a51b6dd1 100644 --- a/src/Components/Aspire.RabbitMQ.Client/RabbitMQEventSourceLogForwarder.cs +++ b/src/Components/Aspire.RabbitMQ.Client/RabbitMQEventSourceLogForwarder.cs @@ -31,7 +31,7 @@ public void Start() private void LogEvent(EventWrittenEventArgs eventData) { var level = MapLevel(eventData.Level); - var eventId = new EventId(eventData.EventId, eventData.EventName); + var eventId = new EventId(eventData.EventId); // Special case the Error event so the Exception Details are written correctly if (eventData.EventId == 3 && diff --git a/tests/Aspire.RabbitMQ.Client.Tests/AspireRabbitMQLoggingTests.cs b/tests/Aspire.RabbitMQ.Client.Tests/AspireRabbitMQLoggingTests.cs index 15de0df9ceb..add228de7aa 100644 --- a/tests/Aspire.RabbitMQ.Client.Tests/AspireRabbitMQLoggingTests.cs +++ b/tests/Aspire.RabbitMQ.Client.Tests/AspireRabbitMQLoggingTests.cs @@ -104,6 +104,35 @@ public void TestInfoAndWarn() Assert.Equal(warningMessage, logs[1].Message); } + [Fact] + public void ForwardsEventIdWithoutLevelName() + { + var builder = Host.CreateEmptyApplicationBuilder(null); + builder.Services.AddSingleton(); + + var logger = new TestLogger(); + builder.Services.AddSingleton(sp => new LoggerProvider(logger)); + + using var host = builder.Build(); + host.Services.GetRequiredService().Start(); + + LogInfo("info"); + LogWarn("warn"); + LogError("error", new InvalidOperationException("test")); + + var logs = logger.Logs.ToArray(); + Assert.Equal(3, logs.Length); + + Assert.Equal(1, logs[0].EventId.Id); + Assert.True(string.IsNullOrEmpty(logs[0].EventId.Name)); + + Assert.Equal(2, logs[1].EventId.Id); + Assert.True(string.IsNullOrEmpty(logs[1].EventId.Name)); + + Assert.Equal(3, logs[2].EventId.Id); + Assert.True(string.IsNullOrEmpty(logs[2].EventId.Name)); + } + [Fact] public void TestExceptionWithoutInnerException() { @@ -239,7 +268,7 @@ public void Dispose() { } private sealed class TestLogger : ILogger { - public BlockingCollection<(LogLevel Level, string Message, object? State)> Logs { get; } = new(); + public BlockingCollection<(LogLevel Level, string Message, object? State, EventId EventId)> Logs { get; } = new(); public Action? LoggedMessage { get; set; } public IDisposable? BeginScope(TState state) where TState : notnull => @@ -249,7 +278,7 @@ private sealed class TestLogger : ILogger public void Log(LogLevel logLevel, EventId eventId, TState state, Exception? exception, Func formatter) { - Logs.Add((logLevel, formatter(state, exception), state)); + Logs.Add((logLevel, formatter(state, exception), state, eventId)); LoggedMessage?.Invoke(); } }