相关疑难解决方法(0)

如何修复过时的ILoggerFactory方法?

我将我的项目升级到.NET Core 2.2.x并得到了关于以下代码的过时警告 - 两行:

public void Configure(IApplicationBuilder app, 
                      IHostingEnvironment env, 
                      ILoggerFactory loggerFactory) 
  {
    loggerFactory.AddConsole(Configuration.GetSection("Logging"));
Run Code Online (Sandbox Code Playgroud)

修复的建议是The recommended alternative is AddConsole(this ILoggingBuilder builder).我以为这就是我正在使用的东西.

我在这里错过了什么?

.net c# .net-core asp.net-core asp.net-core-2.2

34
推荐指数
4
解决办法
1万
查看次数

如何使用ConsoleLoggerProvider创建LoggerFactory?

ConsoleLoggerProvider有四个构造函数:

  1. ConsoleLoggerProvider(IConsoleLoggerSettings)
  2. ConsoleLoggerProvider(IOptionsMonitor<ConsoleLoggerOptions>)
  3. ConsoleLoggerProvider(Func<String,LogLevel,Boolean>, Boolean)
  4. ConsoleLoggerProvider(Func<String,LogLevel,Boolean>, Boolean, Boolean)

其中三个被宣布为过时的消息:

此方法已过时,将在以后的版本中删除.建议的替代方法是使用LoggerFactory配置筛选,使用ConsoleLoggerOptions配置日志记录选项.

使用构造函数#3,LoggerFactory使用a 创建一个ConsoleLoggerProvider很简单(如实体框架核心中记录的 - 日志记录):

var loggerFactory = new LoggerFactory(new[] { new ConsoleLoggerProvider((category, level) => level >= LogLevel.Information, true) });
Run Code Online (Sandbox Code Playgroud)

但由于它已被弃用,我们留下了构造函数#2.这是我发现的等价物:

var configureNamedOptions = new ConfigureNamedOptions<ConsoleLoggerOptions>("", null);
var optionsFactory = new OptionsFactory<ConsoleLoggerOptions>(new []{ configureNamedOptions }, Enumerable.Empty<IPostConfigureOptions<ConsoleLoggerOptions>>());
var optionsMonitor = new OptionsMonitor<ConsoleLoggerOptions>(optionsFactory, Enumerable.Empty<IOptionsChangeTokenSource<ConsoleLoggerOptions>>(), new OptionsCache<ConsoleLoggerOptions>());
var loggerFactory = new LoggerFactory(new[] { new ConsoleLoggerProvider(optionsMonitor) }, new LoggerFilterOptions { MinLevel = LogLevel.Information });
Run Code Online (Sandbox Code Playgroud)

这看起来过于复杂,我错过了一些简单的东西吗?

.net-core asp.net-core-2.2

28
推荐指数
2
解决办法
7833
查看次数

标签 统计

.net-core ×2

asp.net-core-2.2 ×2

.net ×1

asp.net-core ×1

c# ×1