Skip to content

Commit 78f99ee

Browse files
xakep139Nikita
andauthored
Align EventId generation with M.E.Logging source-gen (#6566)
Co-authored-by: Nikita <n.balabaev@2gis.ru>
1 parent f78d287 commit 78f99ee

File tree

3 files changed

+42
-1
lines changed

3 files changed

+42
-1
lines changed

src/Generators/Microsoft.Gen.Logging/Emission/Emitter.Method.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,9 @@ private void GenLogMethod(LoggingMethod lm)
9191
}
9292
else
9393
{
94-
OutLn($"new({GetNonRandomizedHashCode(eventName)}, {eventName}),");
94+
var eventNameToCalcId = string.IsNullOrWhiteSpace(lm.EventName) ? lm.Name : lm.EventName!;
95+
var calculatedEventId = GetNonRandomizedHashCode(eventNameToCalcId);
96+
OutLn($"new({calculatedEventId}, {eventName}),");
9597
}
9698

9799
OutLn($"{stateName},");

test/Generators/Microsoft.Gen.Logging/Generated/LogMethodTests.cs

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -580,6 +580,37 @@ public void EventNameTests()
580580
Assert.Equal("M1_Event", logRecord.Id.Name);
581581
}
582582

583+
[Fact]
584+
public void EventIdTests()
585+
{
586+
using var logger = Utils.GetLogger();
587+
var collector = logger.FakeLogCollector;
588+
589+
collector.Clear();
590+
EventNameTestExtensions.M1(LogLevel.Warning, logger, "Eight");
591+
Assert.Equal(1, collector.Count);
592+
593+
var firstEventId = collector.LatestRecord.Id;
594+
Assert.NotEqual(0, firstEventId.Id);
595+
Assert.Equal("M1_Event", firstEventId.Name);
596+
597+
collector.Clear();
598+
EventNameTestExtensions.M1_Event(logger, "Nine");
599+
Assert.Equal(1, collector.Count);
600+
601+
var secondEventId = collector.LatestRecord.Id;
602+
Assert.Equal(firstEventId.Id, secondEventId.Id); // Same EventName means same generated EventId
603+
Assert.Equal(nameof(EventNameTestExtensions.M1_Event), secondEventId.Name);
604+
605+
collector.Clear();
606+
EventNameTestExtensions.M2(logger, "Ten");
607+
Assert.Equal(1, collector.Count);
608+
609+
var thirdEventId = collector.LatestRecord.Id;
610+
Assert.NotEqual(thirdEventId.Id, secondEventId.Id); // Different EventName means different generated EventId
611+
Assert.Equal(nameof(EventNameTestExtensions.M2), thirdEventId.Name);
612+
}
613+
583614
[Fact]
584615
public void NestedClassTests()
585616
{

test/Generators/Microsoft.Gen.Logging/TestClasses/EventNameTestExtensions.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,13 @@ internal static partial class EventNameTestExtensions
1212

1313
[LoggerMessage(EventName = "M1_Event")]
1414
public static partial void M1(LogLevel level, ILogger logger, string p0);
15+
16+
// This one should have the same generated EventId as the method above
17+
[LoggerMessage(LogLevel.Debug)]
18+
public static partial void M1_Event(ILogger logger, string p0);
19+
20+
// This one should have different generated EventId as the methods above
21+
[LoggerMessage(LogLevel.Error)]
22+
public static partial void M2(ILogger logger, string p0);
1523
}
1624
}

0 commit comments

Comments
 (0)