From c545cf8bfbffd85ce0fd132374d258c3ea7f790d Mon Sep 17 00:00:00 2001 From: Maryam Ariyan Date: Fri, 13 Aug 2021 14:49:33 -0700 Subject: [PATCH] Fix compile issue with escaped characters in logging generator message --- .../gen/LoggerMessageGenerator.Emitter.cs | 2 +- .../LoggerMessageGeneratedCodeTests.cs | 8 ++++++++ .../TestClasses/MessageTestExtensions.cs | 3 +++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/LoggerMessageGenerator.Emitter.cs b/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/LoggerMessageGenerator.Emitter.cs index 16c16f482aadd8..53dd062b5d4b4c 100644 --- a/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/LoggerMessageGenerator.Emitter.cs +++ b/src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/LoggerMessageGenerator.Emitter.cs @@ -152,7 +152,7 @@ private void GenStruct(LoggerMethod lm, string nestedIndentation) "); GenVariableAssignments(lm, nestedIndentation); _builder.Append($@" - {nestedIndentation}return $""{lm.Message}""; + {nestedIndentation}return $""{ConvertEndOfLineAndQuotationCharactersToEscapeForm(lm.Message)}""; {nestedIndentation}}} "); _builder.Append($@" diff --git a/src/libraries/Microsoft.Extensions.Logging.Abstractions/tests/Microsoft.Extensions.Logging.Generators.Tests/LoggerMessageGeneratedCodeTests.cs b/src/libraries/Microsoft.Extensions.Logging.Abstractions/tests/Microsoft.Extensions.Logging.Generators.Tests/LoggerMessageGeneratedCodeTests.cs index 33d1ab7c901712..d55bf4a8028d52 100644 --- a/src/libraries/Microsoft.Extensions.Logging.Abstractions/tests/Microsoft.Extensions.Logging.Generators.Tests/LoggerMessageGeneratedCodeTests.cs +++ b/src/libraries/Microsoft.Extensions.Logging.Abstractions/tests/Microsoft.Extensions.Logging.Generators.Tests/LoggerMessageGeneratedCodeTests.cs @@ -194,6 +194,14 @@ public void MessageTests() Assert.Equal(LogLevel.Trace, logger.LastLogLevel); Assert.Equal(6, logger.LastEventId.Id); Assert.Equal(1, logger.CallCount); + + logger.Reset(); + MessageTestExtensions.M7(logger, LogLevel.Trace, "p", "q"); + Assert.Null(logger.LastException); + Assert.Equal("\"p\" -> \"q\"", logger.LastFormattedString); + Assert.Equal(LogLevel.Trace, logger.LastLogLevel); + Assert.Equal(7, logger.LastEventId.Id); + Assert.Equal(1, logger.CallCount); } [Fact] diff --git a/src/libraries/Microsoft.Extensions.Logging.Abstractions/tests/Microsoft.Extensions.Logging.Generators.Tests/TestClasses/MessageTestExtensions.cs b/src/libraries/Microsoft.Extensions.Logging.Abstractions/tests/Microsoft.Extensions.Logging.Generators.Tests/TestClasses/MessageTestExtensions.cs index 8cad8db64cd9de..5ad4e278dfe236 100644 --- a/src/libraries/Microsoft.Extensions.Logging.Abstractions/tests/Microsoft.Extensions.Logging.Generators.Tests/TestClasses/MessageTestExtensions.cs +++ b/src/libraries/Microsoft.Extensions.Logging.Abstractions/tests/Microsoft.Extensions.Logging.Generators.Tests/TestClasses/MessageTestExtensions.cs @@ -35,5 +35,8 @@ internal static partial class MessageTestExtensions [LoggerMessage(EventId = 6, Message = "")] public static partial void M6(ILogger logger, LogLevel level); + + [LoggerMessage(EventId = 7, Message = "\"{Value1}\" -> \"{Value2}\"")] + public static partial void M7(ILogger logger, LogLevel logLevel, string value1, string value2); } }