From fdd7caad18c5e194bf7664ac28e3df6898f916c9 Mon Sep 17 00:00:00 2001 From: Mitch Denny Date: Fri, 3 Nov 2023 18:59:46 +1100 Subject: [PATCH 1/4] Suppress standard ASP.NET Core logs for dashboard app. --- .../DashboardWebApplication.cs | 37 ++++++++++++++++++- src/Aspire.Hosting/Dcp/DcpHostService.cs | 3 +- 2 files changed, 38 insertions(+), 2 deletions(-) diff --git a/src/Aspire.Dashboard/DashboardWebApplication.cs b/src/Aspire.Dashboard/DashboardWebApplication.cs index c4e27b8fe34..dc3debeed37 100644 --- a/src/Aspire.Dashboard/DashboardWebApplication.cs +++ b/src/Aspire.Dashboard/DashboardWebApplication.cs @@ -10,8 +10,10 @@ using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.HttpsPolicy; using Microsoft.AspNetCore.Server.Kestrel.Core; +using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; +using Microsoft.Extensions.Logging; using Microsoft.FluentUI.AspNetCore.Components; namespace Aspire.Dashboard; @@ -25,12 +27,20 @@ public class DashboardWebApplication : IHostedService private readonly bool _isAllHttps; private readonly WebApplication _app; + private readonly ILogger _logger; - public DashboardWebApplication(Action configureServices) + public DashboardWebApplication(ILogger logger, Action configureServices) { + _logger = logger; var builder = WebApplication.CreateBuilder(); var dashboardUris = GetAddressUris(DashboardUrlVariableName, DashboardUrlDefaultValue); + + if (dashboardUris.FirstOrDefault() is { } reportedDashboardUri) + { + _logger.LogInformation("Dashboard running at: {dashboardUri}", reportedDashboardUri); + } + var dashboardHttpsPort = dashboardUris.FirstOrDefault(IsHttps)?.Port; var otlpUris = GetAddressUris(DashboardOtlpUrlVariableName, DashboardOtlpUrlDefaultValue); @@ -164,10 +174,35 @@ static void ConfigureListenOptions(ListenOptions options, Uri uri, HttpProtocols } } + private void SuppressAspNetCoreLogs() + { + var config = (IConfigurationRoot)_app.Services.GetRequiredService(); + + // The following code suppresses these messages (example): + // info: Microsoft.Hosting.Lifetime[14] + // Now listening on: http://localhost:15888 + // info: Microsoft.Hosting.Lifetime[14] + // Now listening on: http://localhost:16031 + // info: Microsoft.Hosting.Lifetime[0] + // Content root path: C:\Code\dotnet\aspire\samples\eShopLite\AppHost + // + var hostingLifetimeLoggingLevelSection = config.GetSection("Logging:LogLevel:Microsoft.Hosting.Lifetime"); + hostingLifetimeLoggingLevelSection.Value = "Warning"; + + // The following code suppresses these messages (example): + // warn: Microsoft.AspNetCore.Server.Kestrel[0] + // Overriding address(es) 'http://localhost:15888'.Binding to endpoints defined via IConfiguration and/ or UseKestrel() instead. + var kestrelLoggingLevelSection = config.GetSection("Logging:LogLevel:Microsoft.AspNetCore.Server.Kestrel"); + kestrelLoggingLevelSection.Value = "Error"; + + config.Reload(); + } + private static bool IsHttps(Uri uri) => string.Equals(uri.Scheme, "https", StringComparison.Ordinal); public async Task StartAsync(CancellationToken cancellationToken) { + SuppressAspNetCoreLogs(); await _app.StartAsync(cancellationToken).ConfigureAwait(false); } diff --git a/src/Aspire.Hosting/Dcp/DcpHostService.cs b/src/Aspire.Hosting/Dcp/DcpHostService.cs index 66ba6c6d139..ee3a78f5c1c 100644 --- a/src/Aspire.Hosting/Dcp/DcpHostService.cs +++ b/src/Aspire.Hosting/Dcp/DcpHostService.cs @@ -55,7 +55,8 @@ public DcpHostService(DistributedApplicationModel applicationModel, if (options.DashboardEnabled) { - _dashboard = new DashboardWebApplication(serviceCollection => + var dashboardLogger = _loggerFactory.CreateLogger(); + _dashboard = new DashboardWebApplication(dashboardLogger, serviceCollection => { serviceCollection.AddSingleton(_applicationModel); serviceCollection.AddSingleton(kubernetesService); From cc679b31ce73c9021833e8cac19e72b0c454a3b7 Mon Sep 17 00:00:00 2001 From: Mitch Denny Date: Fri, 3 Nov 2023 19:21:12 +1100 Subject: [PATCH 2/4] Better way of suppressing. --- .../DashboardWebApplication.cs | 33 ++++--------------- 1 file changed, 7 insertions(+), 26 deletions(-) diff --git a/src/Aspire.Dashboard/DashboardWebApplication.cs b/src/Aspire.Dashboard/DashboardWebApplication.cs index dc3debeed37..114c8c8fbdf 100644 --- a/src/Aspire.Dashboard/DashboardWebApplication.cs +++ b/src/Aspire.Dashboard/DashboardWebApplication.cs @@ -10,7 +10,6 @@ using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.HttpsPolicy; using Microsoft.AspNetCore.Server.Kestrel.Core; -using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; @@ -33,6 +32,8 @@ public DashboardWebApplication(ILogger logger, Action logger, Action @@ -174,35 +180,10 @@ static void ConfigureListenOptions(ListenOptions options, Uri uri, HttpProtocols } } - private void SuppressAspNetCoreLogs() - { - var config = (IConfigurationRoot)_app.Services.GetRequiredService(); - - // The following code suppresses these messages (example): - // info: Microsoft.Hosting.Lifetime[14] - // Now listening on: http://localhost:15888 - // info: Microsoft.Hosting.Lifetime[14] - // Now listening on: http://localhost:16031 - // info: Microsoft.Hosting.Lifetime[0] - // Content root path: C:\Code\dotnet\aspire\samples\eShopLite\AppHost - // - var hostingLifetimeLoggingLevelSection = config.GetSection("Logging:LogLevel:Microsoft.Hosting.Lifetime"); - hostingLifetimeLoggingLevelSection.Value = "Warning"; - - // The following code suppresses these messages (example): - // warn: Microsoft.AspNetCore.Server.Kestrel[0] - // Overriding address(es) 'http://localhost:15888'.Binding to endpoints defined via IConfiguration and/ or UseKestrel() instead. - var kestrelLoggingLevelSection = config.GetSection("Logging:LogLevel:Microsoft.AspNetCore.Server.Kestrel"); - kestrelLoggingLevelSection.Value = "Error"; - - config.Reload(); - } - private static bool IsHttps(Uri uri) => string.Equals(uri.Scheme, "https", StringComparison.Ordinal); public async Task StartAsync(CancellationToken cancellationToken) { - SuppressAspNetCoreLogs(); await _app.StartAsync(cancellationToken).ConfigureAwait(false); } From 03be736c1f1aca2207ac49522ed05bf41467737e Mon Sep 17 00:00:00 2001 From: David Fowler Date: Fri, 3 Nov 2023 01:23:20 -0700 Subject: [PATCH 3/4] Update src/Aspire.Dashboard/DashboardWebApplication.cs --- src/Aspire.Dashboard/DashboardWebApplication.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Aspire.Dashboard/DashboardWebApplication.cs b/src/Aspire.Dashboard/DashboardWebApplication.cs index 114c8c8fbdf..6b419091dc4 100644 --- a/src/Aspire.Dashboard/DashboardWebApplication.cs +++ b/src/Aspire.Dashboard/DashboardWebApplication.cs @@ -52,7 +52,7 @@ public DashboardWebApplication(ILogger logger, Action Date: Sat, 4 Nov 2023 01:28:40 +1100 Subject: [PATCH 4/4] Make dashboard not start on publish. --- src/Aspire.Hosting/Dcp/DcpHostService.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Aspire.Hosting/Dcp/DcpHostService.cs b/src/Aspire.Hosting/Dcp/DcpHostService.cs index ee3a78f5c1c..07260a8c299 100644 --- a/src/Aspire.Hosting/Dcp/DcpHostService.cs +++ b/src/Aspire.Hosting/Dcp/DcpHostService.cs @@ -53,7 +53,8 @@ public DcpHostService(DistributedApplicationModel applicationModel, _appExecutor = appExecutor; _locations = locations; - if (options.DashboardEnabled) + // HACK: Manifest publisher check is temporary util DcpHostService is integrated with DcpPublisher. + if (options.DashboardEnabled && publishingOptions.Value.Publisher != "manifest") { var dashboardLogger = _loggerFactory.CreateLogger(); _dashboard = new DashboardWebApplication(dashboardLogger, serviceCollection =>