Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 7 additions & 2 deletions src/Aspire.Hosting/Dcp/DcpHost.cs
Original file line number Diff line number Diff line change
Expand Up @@ -276,7 +276,7 @@ private async Task LogSocketOutputAsync(Socket socket, CancellationToken cancell
if (!DcpLogParser.TryParseDcpLog(line, out var parsedMessage, out var logLevel, out var category))
{
// If parsing fails, return a default logger and the line as-is
return (_logger, LogLevel.Information, Encoding.UTF8.GetString(line));
return (_logger, LogLevel.Debug, Encoding.UTF8.GetString(line));
}

var hash = new HashCode();
Expand All @@ -290,7 +290,12 @@ private async Task LogSocketOutputAsync(Socket socket, CancellationToken cancell
loggerCache[hashValue] = logger = _loggerFactory.CreateLogger($"Aspire.Hosting.Dcp.{category}");
}

return (logger, logLevel, parsedMessage);
// Map DCP log levels to Debug/Trace to reduce noise in AppHost output.
// DCP errors are now flowing to resources and can be hidden from output,
// so we log them at Debug/Trace level instead of using the original DCP log level.
var appHostLogLevel = logLevel == LogLevel.Trace ? LogLevel.Trace : LogLevel.Debug;

return (logger, appHostLogLevel, parsedMessage);
}

try
Expand Down
22 changes: 22 additions & 0 deletions tests/Aspire.Hosting.Tests/Dcp/DcpLogParserTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -215,4 +215,26 @@ public void TryParseDcpLog_RealWorldExampleFromIssue_ParsesSuccessfully()
Assert.Equal(LogLevel.Information, logLevel);
Assert.Equal("dcpctrl.ExecutableReconciler", category);
}

[Theory]
[InlineData("error", LogLevel.Error)]
[InlineData("warning", LogLevel.Warning)]
[InlineData("info", LogLevel.Information)]
[InlineData("debug", LogLevel.Debug)]
[InlineData("trace", LogLevel.Trace)]
public void TryParseDcpLog_ParsesAllLogLevels(string dcpLogLevel, LogLevel expectedLogLevel)
{
// Arrange
var logLine = $"2023-09-19T20:40:50.509-0700\t{dcpLogLevel}\tdcpctrl.TestReconciler\tTest message";
var bytes = Encoding.UTF8.GetBytes(logLine);

// Act
var result = DcpLogParser.TryParseDcpLog(bytes.AsSpan(), out var message, out var logLevel, out var category);

// Assert
Assert.True(result);
Assert.Equal("Test message", message);
Assert.Equal(expectedLogLevel, logLevel);
Assert.Equal("dcpctrl.TestReconciler", category);
}
}