UseLoggerFactory(ILoggerFactory)
.NLog.LogFactory
не наследует ILoggerFactory
.var logger = LogManager.GetCurrentClassLogger();
try
{
logger.Info($"Начинаю запуск приожения {AppDomain.CurrentDomain.FriendlyName}...");
IHost host = Host.CreateDefaultBuilder(args)
.ConfigureLogging((hostContext, logging) =>
{
logging.ClearProviders();
logging.SetMinimumLevel(LogLevel.Trace);
logger.Info("Логгирование сконфигурировано");
})
.UseNLog()
.ConfigureServices((hostContext, services) =>
{
services.AddHostedService<Worker>();
services.AddDbContext<MariaDbContext>(options =>
{
Version version = new(10, 3, 34);
ServerVersion serverVersion = ServerVersion.Create(version, ServerType.MariaDb);
// options.UseLoggerFactory();
string connectionString = hostContext.Configuration.GetConnectionString("MariaDataBase");
options.UseMySql(connectionString, serverVersion);
logger.Info("Контекст базы данных добвален");
}, ServiceLifetime.Transient, ServiceLifetime.Transient);
logger.Info("Сервисы сконфигурированы");
})
.Build();
logger.Info($"Запускаю");
await host.RunAsync();
}
catch (Exception ex)
{
if (ex is OperationCanceledException)
{
logger.Info("Запрошена остановка приложения");
}
else
{
logger.Fatal(ex, "Приложение остановлено из-за непридвиденной ошибки");
}
}
finally
{
logger.Info("Завершаю работу приложения");
LogManager.Shutdown();
}
UseLoggerFactory(ILoggerFactory)
. Фабрику можно создать вручную, и передаём в неё в качестве аргумента NLog.Extensions.Logging.NLogLoggerProvider
для того, чтобы логирование подхватывалось NLog.LoggerFactory dbLoggerFactory = new LoggerFactory(new[] { new NLogLoggerProvider() });
options.UseLoggerFactory(dbLoggerFactory);
LogManager.LoadConfiguration("NLog.config");
IHost host = Host.CreateDefaultBuilder(args)
.ConfigureHostConfiguration(builder =>
{
builder.SetBasePath(System.IO.Directory.GetCurrentDirectory());
})
.ConfigureServices(services =>
{
services.AddHostedService<Worker>();
var config = new ConfigurationBuilder()
.SetBasePath(System.IO.Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddEnvironmentVariables()
.Build();
services.AddSingleton<IRunner, Runner>()
.AddLogging(loggingBuilder =>
{
// configure Logging with NLog
loggingBuilder.ClearProviders();
loggingBuilder.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Debug);
loggingBuilder.AddNLog(config);
});
services.AddSingleton<IEmailService, EmailService>();
services.AddSingleton<IClientSmtp, SmtpClientGoogleAsync>();
services.AddSingleton<ICheckingSubEmailService, CheckingSubEmailService>();
})
.UseWindowsService()
.Build();