Program.cs 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. using Admin.Core.Common.Configs;
  2. using Admin.Core.Common.Helpers;
  3. using Autofac.Extensions.DependencyInjection;
  4. using Microsoft.AspNetCore.Hosting;
  5. using Microsoft.Extensions.Configuration;
  6. using Microsoft.Extensions.Hosting;
  7. using Microsoft.Extensions.Logging;
  8. using NLog;
  9. using NLog.Web;
  10. using System;
  11. using System.Threading.Tasks;
  12. using LogLevel = Microsoft.Extensions.Logging.LogLevel;
  13. //using NLog.Extensions.Logging;
  14. namespace Admin.Core
  15. {
  16. public class Program
  17. {
  18. private static AppConfig appConfig = new ConfigHelper().Get<AppConfig>("appconfig") ?? new AppConfig();
  19. public static async Task<int> Main(string[] args)
  20. {
  21. var logger = LogManager.GetCurrentClassLogger();
  22. try
  23. {
  24. Console.WriteLine(" launching...");
  25. var host = CreateHostBuilder(args).Build();
  26. Console.WriteLine($"\r\n {string.Join("\r\n ", appConfig.Urls)}\r\n");
  27. await host.RunAsync();
  28. return 0;
  29. }
  30. catch (Exception ex)
  31. {
  32. logger.Error(ex, "Stopped program because of exception");
  33. return 1;
  34. }
  35. finally
  36. {
  37. LogManager.Shutdown();
  38. }
  39. }
  40. public static IHostBuilder CreateHostBuilder(string[] args)
  41. {
  42. //使用logconfig.json配置,默认使用nlog.config
  43. //var logConfig = new ConfigHelper().Load("logconfig", reloadOnChange: true).GetSection("nLog");
  44. //LogManager.Configuration = new NLogLoggingConfiguration(logConfig);
  45. return Host.CreateDefaultBuilder(args)
  46. .UseServiceProviderFactory(new AutofacServiceProviderFactory())
  47. .ConfigureWebHostDefaults(webBuilder =>
  48. {
  49. webBuilder
  50. //.UseEnvironment(Environments.Production)
  51. .UseStartup<Startup>()
  52. .ConfigureAppConfiguration((host, config) =>
  53. {
  54. if (appConfig.RateLimit)
  55. {
  56. config.AddJsonFile("./configs/ratelimitconfig.json", optional: false, reloadOnChange: true)
  57. .AddJsonFile($"./configs/ratelimitconfig.{host.HostingEnvironment.EnvironmentName}.json", optional: true, reloadOnChange: true);
  58. }
  59. })
  60. .UseUrls(appConfig.Urls);
  61. })
  62. .ConfigureLogging(logging =>
  63. {
  64. logging.ClearProviders();
  65. logging.SetMinimumLevel(LogLevel.Trace);
  66. })
  67. .UseNLog();
  68. }
  69. }
  70. }