Я успешно создал регистратор, используя Serilog, но не могу определить, как определить, существует ли база данных сервера SQL, в которую я веду журнал, до создания регистратора. Цель состоит в том, чтобы создать регистратор перед этой строкой в моей главной функции, чтобы я получил все журналы запуска:
var host = CreateHostBuilder(args).Build();
Однако, если я это сделаю, и база данных не ' Пока не существует, таблица регистрации не будет создана при первом запуске приложения. Он будет создан во второй раз, когда я запускаю приложение, потому что я создаю и заполняю базу данных после этой строки кода.
Я хочу иметь возможность создать регистратор до запуска CreateHostBuilder, если база данных существует или создать регистратор после CreateHostBuilder и SeedDatabase запускается, если база данных еще не существует. Я не могу запустить CreateLogger () дважды либо я получу исключение.
Вот код:
public static void Main(string[] args)
{
try
{
// If I create the logger here I'll see all the startup logs
// if the database exists. If the database doesn't exist yet the
// logging table won't get created until the second time I startup the app.
CreateLogger();
Log.Information("Starting Up");
var host = CreateHostBuilder(args).Build();
SeedDatabase(host);
// If I create the logger here I don't get all of the startup logs but
// it ensures that if the database hasn't been created and seeded yet the
// logging table is still created.
CreateLogger();
host.Run();
}
catch (Exception exception)
{
Log.Fatal(exception, "Application start-up failed");
}
finally
{
Log.CloseAndFlush();
}
}