using System; using System.IO; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Hosting; using NLog; using NLog.Extensions.Logging; using NLog.Web; namespace Squirrowse.Service { public class Program { public static IConfigurationRoot Configuration { get; set; } public static void Main(string[] args) { Configuration = CreateConfigurationBuilder().Build(); var logger = GetLogger(); try { logger.Debug("Application started"); CreateHostBuilder(args) .Build() .Run(); } catch (Exception ex) { logger.Error(ex, "Stopped program because of exception when building WebHost"); throw; } finally { LogManager.Shutdown(); } } public static IHostBuilder CreateHostBuilder(string[] args) { return Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup(); webBuilder.UseConfiguration(Configuration); webBuilder.UseNLog(); }); } private static IConfigurationBuilder CreateConfigurationBuilder() { var environment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT"); return new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json", false, true) .AddJsonFile($"appsettings.{environment}.json", false, true); } private static ILogger GetLogger() { var nlogConfigSection = Configuration.GetSection("NLog"); LogManager.Configuration = new NLogLoggingConfiguration(nlogConfigSection); ILogger logger = LogManager.GetCurrentClassLogger(); return logger; } } }