Skip to content

Commit b290b19

Browse files
committed
Detect Microsoft.Extensions.Logging with either the event id or name
1 parent bb0eb44 commit b290b19

6 files changed

+37
-10
lines changed

src/Log4NetTextFormatter.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -151,9 +151,7 @@ internal static string DefaultMessageFormatter(LogEvent logEvent, IFormatProvide
151151
// https://github.com/serilog/serilog-extensions-logging/blob/v9.0.1/src/Serilog.Extensions.Logging/Extensions/Logging/EventIdPropertyCache.cs#L58-L73
152152
var isMicrosoftExtensionsLoggingEvent = logEvent.Properties.TryGetValue(EventIdPropertyName, out var property)
153153
&& property is StructureValue structure
154-
&& structure.Properties.Count == 2
155-
&& structure.Properties[0].Name == "Id"
156-
&& structure.Properties[1].Name == "Name";
154+
&& structure.Properties.Any(e => e.Name is "Id" or "Name");
157155

158156
if (isMicrosoftExtensionsLoggingEvent)
159157
{
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<log4net:event timestamp="2003-01-04T15:09:26.535+01:00" level="INFO" xmlns:log4net="http://logging.apache.org/log4net/schemas/log4net-events-1.2/">
2+
<log4net:properties>
3+
<log4net:data name="Name" value="World" />
4+
<log4net:data name="EventId.Name" value="EventName" />
5+
</log4net:properties>
6+
<log4net:message><![CDATA[Hello World!]]></log4net:message>
7+
</log4net:event>
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<log4net:event timestamp="2003-01-04T15:09:26.535+01:00" level="INFO" xmlns:log4net="http://logging.apache.org/log4net/schemas/log4net-events-1.2/">
2+
<log4net:properties>
3+
<log4net:data name="Name" value="World" />
4+
<log4net:data name="EventId.Id" value="1" />
5+
<log4net:data name="EventId.Name" value="EventName" />
6+
<log4net:data name="EventId.More" />
7+
</log4net:properties>
8+
<log4net:message><![CDATA[Hello World!]]></log4net:message>
9+
</log4net:event>

tests/Log4NetTextFormatterTest.DefaultMessageFormatter_hasEventId=True.verified.xml renamed to tests/Log4NetTextFormatterTest.DefaultMessageFormatter_eventId=1_eventIdName=null.verified.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
<log4net:properties>
33
<log4net:data name="Name" value="World" />
44
<log4net:data name="EventId.Id" value="1" />
5-
<log4net:data name="EventId.Name" value="EventIdName" />
65
</log4net:properties>
76
<log4net:message><![CDATA[Hello World!]]></log4net:message>
87
</log4net:event>

tests/Log4NetTextFormatterTest.cs

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -451,16 +451,30 @@ public Task Exception()
451451
}
452452

453453
[Theory]
454-
[InlineData(true)]
455-
[InlineData(false)]
456-
public Task DefaultMessageFormatter(bool hasEventId)
454+
[InlineData(0, null)]
455+
[InlineData(0, "EventName")]
456+
[InlineData(1, null)]
457+
[InlineData(1, "EventName")]
458+
public Task DefaultMessageFormatter(int eventId, string? eventIdName)
457459
{
458460
// Arrange
459461
using var output = new StringWriter();
460462
List<LogEventProperty> properties = [ new("Name", new ScalarValue("World")) ];
461-
if (hasEventId)
463+
List<LogEventProperty> eventIdProperties = [];
464+
if (eventId != 0)
465+
{
466+
eventIdProperties.Add(new LogEventProperty("Id", new ScalarValue(eventId)));
467+
}
468+
if (eventIdName != null)
462469
{
463-
LogEventProperty[] eventIdProperties = [ new("Id", new ScalarValue(1)), new("Name", new ScalarValue("EventIdName")) ];
470+
eventIdProperties.Add(new LogEventProperty("Name", new ScalarValue(eventIdName)));
471+
}
472+
if (eventIdProperties.Count > 0)
473+
{
474+
if (eventIdProperties.Count == 2)
475+
{
476+
eventIdProperties.Add(new LogEventProperty("More", new ScalarValue(null)));
477+
}
464478
properties.Add(new LogEventProperty("EventId", new StructureValue(eventIdProperties)));
465479
}
466480
var logEvent = CreateLogEvent(messageTemplate: "Hello {Name}!", properties: properties.ToArray());
@@ -470,7 +484,7 @@ public Task DefaultMessageFormatter(bool hasEventId)
470484
formatter.Format(logEvent, output);
471485

472486
// Assert
473-
return Verify(output).UseParameters(hasEventId);
487+
return Verify(output).UseParameters(eventId, eventIdName);
474488
}
475489

476490
[Fact]

0 commit comments

Comments
 (0)