Nlog - задержка целевой базы данных - PullRequest
0 голосов
/ 09 мая 2020

Я настроил nlog для записи журналов в базу данных, предоставив хост для строки подключения из настроек приложения. json с использованием ящика макета конфигурации. Но внутри Startup.ConfigureServices и Startup.Configure есть несколько вызовов журнала. Итак, когда конфигурация не готова, nlog в этот момент пытается выполнить запись в базу данных. Требуется пустой хост (конфигурация все еще не готова!), И в собственном файле журнала nlog я вижу ошибку неудачного ведения журнала из-за пустого хоста.

Итак, вопрос: это способ не регистрировать в базу данных, пока конфигурация не будет готова?

1 Ответ

1 голос
/ 09 мая 2020

Я предполагаю, что проблема в том, что вы начинаете использовать NLog до того, как загрузили MEL-Configuration.

«Решение» - выполнить раннюю загрузку и настроить параметры приложения. json:

var builder = new ConfigurationBuilder()
    .SetBasePath(env.ContentRootPath)
    .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
    .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
    .AddEnvironmentVariables();

Configuration = builder.Build();

ConfigSettingLayoutRenderer.DefaultConfiguration = Configuration;

// Loads NLog.config one more time
var logger = NLog.Web.NLogBuilder.ConfigureNLog("nlog.config").GetCurrentClassLogger();

См. Также: https://github.com/NLog/NLog.Extensions.Logging/issues/265

NLog 4.7.1 и NLog.Web.AspNetCore вер. 4.9.3 позволит это сделать:

var logger = NLog.LogManager.Setup().LoadConfigurationFromAppSettings().GetCurrentClassLogger();

См. Также: https://github.com/NLog/NLog.Web/pull/540

...