using Microsoft.EntityFrameworkCore; using NLog; using NLog.Web; using ReC.API.Middleware; using ReC.Application; using ReC.Infrastructure; using LogLevel = Microsoft.Extensions.Logging.LogLevel; var logger = LogManager.Setup().LoadConfigurationFromAppSettings().GetCurrentClassLogger(); logger.Info("Logging initialized!"); try { var builder = WebApplication.CreateBuilder(args); builder.Logging.SetMinimumLevel(LogLevel.Trace); if (!builder.Environment.IsDevelopment()) { builder.Logging.ClearProviders(); builder.Host.UseNLog(); } var config = builder.Configuration; // Add services to the container. builder.Services.AddRecServices(options => { options.LuckyPennySoftwareLicenseKey = builder.Configuration["LuckyPennySoftwareLicenseKey"]; options.ConfigureRecActions(config.GetSection("RecAction")); }); builder.Services.AddRecInfrastructure(options => { options.ConfigureDbContext((provider, opt) => { var cnnStr = builder.Configuration.GetConnectionString("Default") ?? throw new InvalidOperationException("Connection string is not found."); var logger = provider.GetRequiredService>(); opt.UseSqlServer(cnnStr) .LogTo(log => logger.LogInformation("{log}", log), LogLevel.Trace) .EnableSensitiveDataLogging() .EnableDetailedErrors(); }); }); builder.Services.AddControllers(); // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); var app = builder.Build(); #pragma warning disable CS0618 app.UseMiddleware(); #pragma warning restore CS0618 // Configure the HTTP request pipeline. if (app.Environment.IsDevelopment()) { app.UseSwagger(); app.UseSwaggerUI(); } app.UseHttpsRedirection(); app.UseAuthorization(); app.MapControllers(); app.Run(); } catch(Exception ex) { logger.Error(ex, "Stopped program because of exception"); throw; }