Program.cs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. using System;
  2. using System.IO;
  3. using Microsoft.AspNetCore.Hosting;
  4. using Microsoft.Extensions.Configuration;
  5. using Microsoft.Extensions.Hosting;
  6. using Serilog;
  7. using Serilog.Events;
  8. namespace Procurement
  9. {
  10. public class Program
  11. {
  12. public static int Main(string[] args)
  13. {
  14. var configuration = new ConfigurationBuilder()
  15. .SetBasePath(Directory.GetCurrentDirectory())
  16. .AddJsonFile("appsettings.json")
  17. .AddEnvironmentVariables()
  18. .Build();
  19. NLog.Extensions.Logging.ConfigSettingLayoutRenderer.DefaultConfiguration = configuration;
  20. Log.Logger = new LoggerConfiguration()
  21. #if DEBUG
  22. .MinimumLevel.Debug()
  23. #else
  24. .MinimumLevel.Information()
  25. #endif
  26. .MinimumLevel.Override("Microsoft", LogEventLevel.Information)
  27. .Enrich.FromLogContext()
  28. .WriteTo.Async(c => c.File("Logs/logs.txt"))
  29. .WriteTo.Console()
  30. .CreateLogger();
  31. try
  32. {
  33. Log.Information("Starting Procurement.Host");
  34. CreateHostBuilder(args).Build().Run();
  35. return 0;
  36. }
  37. catch (Exception ex)
  38. {
  39. Log.Fatal(ex, "Host terminated unexpectedly!");
  40. return 1;
  41. }
  42. finally
  43. {
  44. Log.CloseAndFlush();
  45. NLog.LogManager.Shutdown();
  46. }
  47. }
  48. internal static IHostBuilder CreateHostBuilder(string[] args) =>
  49. Host.CreateDefaultBuilder(args)
  50. .ConfigureWebHostDefaults(webBuilder =>
  51. {
  52. webBuilder.UseStartup<Startup>();
  53. })
  54. .UseAutofac()
  55. .UseSerilog();
  56. }
  57. }