diff --git a/release_notes.md b/release_notes.md index db3c10d3e9..f5f34d295c 100644 --- a/release_notes.md +++ b/release_notes.md @@ -5,3 +5,4 @@ - Update Python Worker Version to [4.4.0](https://github.com/Azure/azure-functions-python-worker/releases/tag/4.4.0) **Release sprint:** Sprint 125 [ [bugs](https://github.com/Azure/azure-functions-host/issues?q=is%3Aissue+milestone%3A%22Functions+Sprint+125%22+label%3Abug+is%3Aclosed) | [features](https://github.com/Azure/azure-functions-host/issues?q=is%3Aissue+milestone%3A%22Functions+Sprint+125%22+label%3Afeature+is%3Aclosed) ] +- Fix the bug where debugging of dotnet isolated function apps hangs in visual studio (#8596) diff --git a/src/WebJobs.Script/Workers/ProcessManagement/WorkerProcessUtilities.cs b/src/WebJobs.Script/Workers/ProcessManagement/WorkerProcessUtilities.cs index 74ae23dd78..f8556556bd 100644 --- a/src/WebJobs.Script/Workers/ProcessManagement/WorkerProcessUtilities.cs +++ b/src/WebJobs.Script/Workers/ProcessManagement/WorkerProcessUtilities.cs @@ -43,10 +43,5 @@ public static bool IsToolingConsoleJsonLogEntry(ConsoleLog consoleLog) { return consoleLog.Message.StartsWith(WorkerConstants.ToolingConsoleLogPrefix, StringComparison.OrdinalIgnoreCase); } - - public static string RemoveToolingConsoleJsonLogPrefix(string msg) - { - return Regex.Replace(msg, WorkerConstants.ToolingConsoleLogPrefix, string.Empty, RegexOptions.IgnoreCase); - } } } diff --git a/src/WebJobs.Script/Workers/WorkerConsoleLogService.cs b/src/WebJobs.Script/Workers/WorkerConsoleLogService.cs index 689627755b..bcdab13b8b 100644 --- a/src/WebJobs.Script/Workers/WorkerConsoleLogService.cs +++ b/src/WebJobs.Script/Workers/WorkerConsoleLogService.cs @@ -65,8 +65,8 @@ internal async Task ProcessLogs() if (WorkerProcessUtilities.IsToolingConsoleJsonLogEntry(consoleLog)) { - _toolingConsoleJsonLoggerLazy.Value.Log(consoleLog.Level, - WorkerProcessUtilities.RemoveToolingConsoleJsonLogPrefix(consoleLog.Message)); + // log with the message prefix as coretools expects it. + _toolingConsoleJsonLoggerLazy.Value.Log(consoleLog.Level, consoleLog.Message); } else { diff --git a/test/WebJobs.Script.Tests/Workers/WorkerConsoleLogServiceTests.cs b/test/WebJobs.Script.Tests/Workers/WorkerConsoleLogServiceTests.cs index 034cafe2ce..a316509985 100644 --- a/test/WebJobs.Script.Tests/Workers/WorkerConsoleLogServiceTests.cs +++ b/test/WebJobs.Script.Tests/Workers/WorkerConsoleLogServiceTests.cs @@ -50,7 +50,7 @@ public async Task WorkerConsoleLogService_ConsoleLogs_LogLevel_Expected(bool use workerProcess.ParseErrorMessageAndLog("LanguageWorkerConsoleLog[Test Worker Message No keyword]"); workerProcess.ParseErrorMessageAndLog("LanguageWorkerConsoleLog[Test Worker Error Message]"); workerProcess.ParseErrorMessageAndLog("LanguageWorkerConsoleLog[Test Worker Warning Message]"); - workerProcess.ParseErrorMessageAndLog("azfuncjsonlog:Azure Functions .NET Worker (PID: 4) initialized in debug mode."); + workerProcess.ParseErrorMessageAndLog("azfuncjsonlog:{ 'name':'dotnet-worker-startup', 'workerProcessId' : 321 }"); // Act _ = _workerConsoleLogService.ProcessLogs().ContinueWith(t => { }); @@ -73,14 +73,16 @@ public async Task WorkerConsoleLogService_ConsoleLogs_LogLevel_Expected(bool use { VerifyLogLevel(userLogs, "Test Message No keyword", LogLevel.Error); VerifyLogLevel(systemLogs, "[Test Worker Message No keyword]", LogLevel.Error); - VerifyLogLevel(toolingConsoleLogs, "Azure Functions .NET Worker (PID: 4) initialized in debug mode.", LogLevel.Error); + VerifyLogLevel(toolingConsoleLogs, "azfuncjsonlog:{ 'name':'dotnet-worker-startup', 'workerProcessId' : 321 }", LogLevel.Error); } else { VerifyLogLevel(userLogs, "Test Message No keyword", LogLevel.Information); VerifyLogLevel(systemLogs, "[Test Worker Message No keyword]", LogLevel.Information); - VerifyLogLevel(toolingConsoleLogs, "Azure Functions .NET Worker (PID: 4) initialized in debug mode.", LogLevel.Information); + VerifyLogLevel(toolingConsoleLogs, "azfuncjsonlog:{ 'name':'dotnet-worker-startup', 'workerProcessId' : 321 }", LogLevel.Information); } + + Assert.True(toolingConsoleLogs.All(l => l.FormattedMessage.StartsWith(WorkerConstants.ToolingConsoleLogPrefix))); } private static void VerifyLogLevel(IList allLogs, string msg, LogLevel expectedLevel) @@ -88,7 +90,6 @@ private static void VerifyLogLevel(IList allLogs, string msg, LogLev var message = allLogs.FirstOrDefault(l => l.FormattedMessage.Contains(msg)); Assert.NotNull(message); Assert.DoesNotContain(WorkerConstants.LanguageWorkerConsoleLogPrefix, message.FormattedMessage); - Assert.DoesNotContain(WorkerConstants.ToolingConsoleLogPrefix, message.FormattedMessage); Assert.Equal(expectedLevel, message.Level); } }