将 AddNLog 从 .NET Core 2.2 迁移到 3.0

Sto*_*orm 5 c# nlog .net-core

Startup我的项目类中,我有以下Configure方法:

private void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    ...
    loggerFactory.AddNLog();
    ...
}
Run Code Online (Sandbox Code Playgroud)

这在 .NET Core 2.2 中工作正常,但升级到 3.0 后,我收到警告 Method 'NLog.Extensions.Logging.ConfigureExtenstions.AddNLog' is obsolete: instead use ILoggingBuilder.AddNLog() or IHostBuilder.UseNLog().

所以我尝试将方法更新为

private void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggingBuilder loggingBuilder)
{
    ...
    loggingBuilder.AddNLog();
    ...
}
Run Code Online (Sandbox Code Playgroud)

或者

private void Configure(IApplicationBuilder app, IWebHostEnvironment env, IHostBuilder hostBuilder)
{
    ...
    hostBuilder.UseNLog();
    ...
}
Run Code Online (Sandbox Code Playgroud)

但在这两种情况下,我都有一个 DI 异常:Could not resolve a service of type {Microsoft.Extensions.Logging.ILoggingBuilder/Microsoft.Extensions.Hosting.IHostBuilder} for the parameter {loggingBuilder/hostBuilder} of method 'Configure' on type 'MyProject.Startup'.

我找不到任何关于如何从 .NET Core 3.0 更改 NLog 配置的可行来源,并且在Microsoft 官方指南中也没有关于登录的内容。有谁知道如何解决这个问题?

Jul*_*ian 4

在 ASP.NET Core 2+ 中,引导 ASP.NET Core 站点的模式发生了变化。NLog 对此进行了调整。使用最新版本的NLog.Extensions.Logging.ConfigureExtenstions,旧方法已过时。

\n

例如,ASP.NET Core 现在使用CreateHostBuilder.

\n

我建议遵循:

\n
    \n
  1. 从 ASP.NET Core 2.2 迁移到 3.0 | 微软文档
  2. \n
  3. 然后:ASP.NET Core 3 入门 \xc2\xb7 NLog/NLog Wiki
  4. \n
\n