abp

Форк
0
1
using MyCompanyName.MyProjectName.Data;
2
using Serilog;
3
using Serilog.Events;
4
using Volo.Abp.Data;
5

6
namespace MyCompanyName.MyProjectName;
7

8
public class Program
9
{
10
    public async static Task<int> Main(string[] args)
11
    {
12
//<TEMPLATE-REMOVE IF-NOT='dbms:PostgreSQL'>
13
        // https://www.npgsql.org/efcore/release-notes/6.0.html#opting-out-of-the-new-timestamp-mapping-logic
14
        AppContext.SetSwitch("Npgsql.EnableLegacyTimestampBehavior", true);
15

16
//</TEMPLATE-REMOVE>
17
        var loggerConfiguration = new LoggerConfiguration()
18
#if DEBUG
19
            .MinimumLevel.Debug()
20
#else
21
            .MinimumLevel.Information()
22
#endif
23
            .MinimumLevel.Override("Microsoft", LogEventLevel.Information)
24
            .MinimumLevel.Override("Microsoft.EntityFrameworkCore", LogEventLevel.Warning)
25
            .Enrich.FromLogContext()
26
            .WriteTo.Async(c => c.File("Logs/logs.txt"))
27
            .WriteTo.Async(c => c.Console());
28

29
        if (IsMigrateDatabase(args))
30
        {
31
            loggerConfiguration.MinimumLevel.Override("Volo.Abp", LogEventLevel.Warning);
32
            loggerConfiguration.MinimumLevel.Override("Microsoft", LogEventLevel.Warning);
33
        }
34

35
        Log.Logger = loggerConfiguration.CreateLogger();
36

37
        try
38
        {
39
            var builder = WebApplication.CreateBuilder(args);
40
            builder.Host.AddAppSettingsSecretsJson()
41
                .UseAutofac()
42
                .UseSerilog();
43
            if (IsMigrateDatabase(args))
44
            {
45
                builder.Services.AddDataMigrationEnvironment();
46
            }
47
            await builder.AddApplicationAsync<MyProjectNameModule>();
48
            var app = builder.Build();
49
            await app.InitializeApplicationAsync();
50

51
            if (IsMigrateDatabase(args))
52
            {
53
                await app.Services.GetRequiredService<MyProjectNameDbMigrationService>().MigrateAsync();
54
                return 0;
55
            }
56

57
            Log.Information("Starting MyCompanyName.MyProjectName.");
58
            await app.RunAsync();
59
            return 0;
60
        }
61
        catch (Exception ex)
62
        {
63
            if (ex is HostAbortedException)
64
            {
65
                throw;
66
            }
67

68
            Log.Fatal(ex, "MyCompanyName.MyProjectName terminated unexpectedly!");
69
            return 1;
70
        }
71
        finally
72
        {
73
            Log.CloseAndFlush();
74
        }
75
    }
76

77
    private static bool IsMigrateDatabase(string[] args)
78
    {
79
        return args.Any(x => x.Contains("--migrate-database", StringComparison.OrdinalIgnoreCase));
80
    }
81
}
82

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.