abp
76 строк · 2.3 Кб
1using MyCompanyName.MyProjectName.Data;
2using Serilog;
3using Serilog.Events;
4using Volo.Abp.Data;
5
6namespace MyCompanyName.MyProjectName;
7
8public class Program
9{
10public async static Task<int> Main(string[] args)
11{
12var loggerConfiguration = new LoggerConfiguration()
13#if DEBUG
14.MinimumLevel.Debug()
15#else
16.MinimumLevel.Information()
17#endif
18.MinimumLevel.Override("Microsoft", LogEventLevel.Information)
19.MinimumLevel.Override("Microsoft.EntityFrameworkCore", LogEventLevel.Warning)
20.Enrich.FromLogContext()
21.WriteTo.Async(c => c.File("Logs/logs.txt"))
22.WriteTo.Async(c => c.Console());
23
24if (IsMigrateDatabase(args))
25{
26loggerConfiguration.MinimumLevel.Override("Volo.Abp", LogEventLevel.Warning);
27loggerConfiguration.MinimumLevel.Override("Microsoft", LogEventLevel.Warning);
28}
29
30Log.Logger = loggerConfiguration.CreateLogger();
31
32try
33{
34var builder = WebApplication.CreateBuilder(args);
35builder.Host.AddAppSettingsSecretsJson()
36.UseAutofac()
37.UseSerilog();
38if (IsMigrateDatabase(args))
39{
40builder.Services.AddDataMigrationEnvironment();
41}
42await builder.AddApplicationAsync<MyProjectNameModule>();
43var app = builder.Build();
44await app.InitializeApplicationAsync();
45
46if (IsMigrateDatabase(args))
47{
48await app.Services.GetRequiredService<MyProjectNameDbMigrationService>().MigrateAsync();
49return 0;
50}
51
52Log.Information("Starting MyCompanyName.MyProjectName.");
53await app.RunAsync();
54return 0;
55}
56catch (Exception ex)
57{
58if (ex is HostAbortedException)
59{
60throw;
61}
62
63Log.Fatal(ex, "MyCompanyName.MyProjectName terminated unexpectedly!");
64return 1;
65}
66finally
67{
68Log.CloseAndFlush();
69}
70}
71
72private static bool IsMigrateDatabase(string[] args)
73{
74return args.Any(x => x.Contains("--migrate-database", StringComparison.OrdinalIgnoreCase));
75}
76}
77