diff --git a/Directory.Version.props b/Directory.Version.props
index a75561b..30573e4 100644
--- a/Directory.Version.props
+++ b/Directory.Version.props
@@ -1,6 +1,6 @@
- 9.0.1
+ 9.0.2
diff --git a/src/Serilog.Extensions.Logging/Extensions/Logging/SerilogLogger.cs b/src/Serilog.Extensions.Logging/Extensions/Logging/SerilogLogger.cs
index cae926c..d3d8bcc 100644
--- a/src/Serilog.Extensions.Logging/Extensions/Logging/SerilogLogger.cs
+++ b/src/Serilog.Extensions.Logging/Extensions/Logging/SerilogLogger.cs
@@ -40,7 +40,7 @@ public SerilogLogger(
_provider = provider ?? throw new ArgumentNullException(nameof(provider));
// If a logger was passed, the provider has already added itself as an enricher
- _logger = logger ?? Serilog.Log.Logger.ForContext(new[] { provider });
+ _logger = logger ?? Serilog.Log.Logger.ForContext([provider]);
if (name != null)
{
@@ -91,7 +91,7 @@ LogEvent PrepareWrite(LogEventLevel level, EventId eventId, TState state
var properties = new Dictionary();
- if (state is IEnumerable> structure)
+ if (state is IEnumerable> structure)
{
foreach (var property in structure)
{
@@ -155,7 +155,7 @@ LogEvent PrepareWrite(LogEventLevel level, EventId eventId, TState state
// The overridden `!=` operator on this type ignores `Name`.
if (eventId.Id != 0 || eventId.Name != null)
- properties.Add("EventId", _eventIdPropertyCache.GetOrCreatePropertyValue(in eventId));
+ properties["EventId"] = _eventIdPropertyCache.GetOrCreatePropertyValue(in eventId);
var (traceId, spanId) = Activity.Current is { } activity ?
(activity.TraceId, activity.SpanId) :
diff --git a/test/Serilog.Extensions.Logging.Tests/SerilogLoggerTests.cs b/test/Serilog.Extensions.Logging.Tests/SerilogLoggerTests.cs
index 6b27c5d..bbbfb14 100644
--- a/test/Serilog.Extensions.Logging.Tests/SerilogLoggerTests.cs
+++ b/test/Serilog.Extensions.Logging.Tests/SerilogLoggerTests.cs
@@ -618,4 +618,20 @@ static void AssertHasScalarProperty(LogEvent logEvent, string name, object? expe
var scalar = Assert.IsType(result);
Assert.Equal(expectedValue, scalar.Value);
}
+
+ [Fact]
+ public void ConflictingEventIdTemplatePropertyIsIgnored()
+ {
+ var (logger, sink) = SetUp(LogLevel.Trace);
+
+ var loggedEventId = 17;
+ logger.LogInformation(loggedEventId, "{EventId}", 42);
+
+ var write = Assert.Single(sink.Writes);
+ var recordedEventIdProperty = Assert.IsType(write.Properties["EventId"]);
+ var recordedEventIdStructure = Assert.Single(recordedEventIdProperty.Properties, p => p.Name == "Id");
+ var recordedEventIdPropertyValue = Assert.IsType(recordedEventIdStructure.Value);
+ var recordedEventId = Assert.IsType(recordedEventIdPropertyValue.Value);
+ Assert.Equal(loggedEventId, recordedEventId);
+ }
}