From a146bd9810901b22c1ea8b1c29e2b78db33b1d52 Mon Sep 17 00:00:00 2001 From: Pat Hartl Date: Fri, 11 Aug 2023 15:12:16 -0500 Subject: [PATCH] Added detailed logging to startup --- LANCommander/Program.cs | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/LANCommander/Program.cs b/LANCommander/Program.cs index f26d5f1..62d06b0 100644 --- a/LANCommander/Program.cs +++ b/LANCommander/Program.cs @@ -9,14 +9,20 @@ using Microsoft.IdentityModel.Tokens; using NLog.Web; using System.Text; using Hangfire; +using NLog; + +Logger Logger = LogManager.GetCurrentClassLogger(); var builder = WebApplication.CreateBuilder(args); ConfigurationManager configuration = builder.Configuration; // Add services to the container. +Logger.Debug("Loading settings"); var settings = SettingService.GetSettings(); +Logger.Debug("Loaded!"); +Logger.Debug("Configuring MVC and Blazor"); builder.Services.AddMvc(options => options.EnableEndpointRouting = false); builder.Services.AddRazorPages(); builder.Services.AddServerSideBlazor().AddCircuitOptions(option => @@ -28,12 +34,14 @@ builder.Services.AddServerSideBlazor().AddCircuitOptions(option => option.DisableImplicitFromServicesParameters = true; }); +Logger.Debug("Starting web server on port {Port}", settings.Port); builder.WebHost.ConfigureKestrel(options => { // Configure as HTTP only options.ListenAnyIP(settings.Port); }); +Logger.Debug("Initializing DatabaseContext with connection string {ConnectionString}", settings.DatabaseConnectionString); builder.Services.AddDbContext(b => { b.UseLazyLoadingProxies(); @@ -42,6 +50,7 @@ builder.Services.AddDbContext(b => builder.Services.AddDatabaseDeveloperPageExceptionFilter(); +Logger.Debug("Initializing Identity") builder.Services.AddDefaultIdentity((IdentityOptions options) => { options.SignIn.RequireConfirmedAccount = false; @@ -77,11 +86,13 @@ builder.Services.AddAuthentication(options => }; }); +Logger.Debug("Initializing Controllers"); builder.Services.AddControllers().AddJsonOptions(x => { x.JsonSerializerOptions.ReferenceHandler = System.Text.Json.Serialization.ReferenceHandler.IgnoreCycles; }); +Logger.Debug("Initializing Hangfire"); builder.Services.AddHangfire(configuration => configuration .SetDataCompatibilityLevel(CompatibilityLevel.Version_170) @@ -90,13 +101,16 @@ builder.Services.AddHangfire(configuration => .UseInMemoryStorage()); builder.Services.AddHangfireServer(); +Logger.Debug("Registering Swashbuckle"); builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); +Logger.Debug("Registering AntDesign Blazor"); builder.Services.AddAntDesign(); builder.Services.AddHttpClient(); +Logger.Debug("Registering Services"); builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); @@ -113,7 +127,10 @@ builder.Services.AddScoped(); builder.Services.AddSingleton(); if (settings.Beacon) +{ + Logger.Debug("The beacons have been lit! LANCommander calls for players!"); builder.Services.AddHostedService(); +} builder.WebHost.UseStaticWebAssets(); @@ -124,11 +141,13 @@ builder.WebHost.UseKestrel(options => builder.Host.UseNLog(); +Logger.Debug("Building Application"); var app = builder.Build(); // Configure the HTTP request pipeline. if (app.Environment.IsDevelopment()) { + Logger.Debug("App has been run in a development environment"); app.UseMigrationsEndPoint(); app.UseSwagger(); app.UseSwaggerUI(); @@ -154,6 +173,7 @@ app.UseMvcWithDefaultRoute(); app.MapHub("/hubs/gameserver"); +Logger.Debug("Registering Endpoints"); app.UseEndpoints(endpoints => { endpoints.MapBlazorHub(); @@ -161,6 +181,7 @@ app.UseEndpoints(endpoints => endpoints.MapControllers(); }); +Logger.Debug("Ensuring required directories exist"); if (!Directory.Exists("Upload")) Directory.CreateDirectory("Upload"); @@ -174,11 +195,13 @@ if (!Directory.Exists("Snippets")) Directory.CreateDirectory("Snippets"); // Migrate +Logger.Debug("Migrating database if required"); await using var scope = app.Services.CreateAsyncScope(); using var db = scope.ServiceProvider.GetService(); await db.Database.MigrateAsync(); // Autostart any server processes +Logger.Debug("Autostarting Servers"); var serverService = scope.ServiceProvider.GetService(); var serverProcessService = scope.ServiceProvider.GetService(); @@ -186,6 +209,8 @@ foreach (var server in await serverService.Get(s => s.Autostart).ToListAsync()) { try { + Logger.Debug("Autostarting server {ServerName} with a delay of {AutostartDelay} seconds", server.Name, server.AutostartDelay); + if (server.AutostartDelay > 0) await Task.Delay(server.AutostartDelay); @@ -193,7 +218,7 @@ foreach (var server in await serverService.Get(s => s.Autostart).ToListAsync()) } catch (Exception ex) { - + Logger.Debug(ex, "An unexpected error occurred while trying to autostart the server {ServerName}", server.Name); } }