Program.cs 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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. using Serilog.Sinks.Elasticsearch;
  9. namespace WebAppGateway
  10. {
  11. public class Program
  12. {
  13. public static int Main(string[] args)
  14. {
  15. var configuration = new ConfigurationBuilder()
  16. .SetBasePath(Directory.GetCurrentDirectory())
  17. .AddJsonFile("appsettings.json")
  18. .AddEnvironmentVariables()
  19. .Build();
  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.Elasticsearch(
  30. new ElasticsearchSinkOptions(new Uri(configuration["ElasticSearch:Url"]))
  31. {
  32. AutoRegisterTemplate = true,
  33. AutoRegisterTemplateVersion = AutoRegisterTemplateVersion.ESv6,
  34. IndexFormat = "msdemo-log-{0:yyyy.MM}"
  35. })
  36. .WriteTo.Console()
  37. .CreateLogger();
  38. try
  39. {
  40. Log.Information("Starting WebAppGateway.Host");
  41. CreateHostBuilder(args).Build().Run();
  42. return 0;
  43. }
  44. catch (Exception ex)
  45. {
  46. Log.Fatal(ex, "Host terminated unexpectedly!");
  47. return 1;
  48. }
  49. finally
  50. {
  51. Log.CloseAndFlush();
  52. }
  53. }
  54. internal static IHostBuilder CreateHostBuilder(string[] args) =>
  55. Host.CreateDefaultBuilder(args)
  56. .ConfigureWebHostDefaults(webBuilder =>
  57. {
  58. webBuilder.UseStartup<Startup>();
  59. })
  60. .UseAutofac()
  61. .UseSerilog();
  62. }
  63. }