ConsoleLoggerProvider 有四个构造函数:
ConsoleLoggerProvider(IConsoleLoggerSettings)
ConsoleLoggerProvider(IOptionsMonitor<ConsoleLoggerOptions>)
ConsoleLoggerProvider(Func<String,LogLevel,Boolean>, Boolean)
ConsoleLoggerProvider(Func<String,LogLevel,Boolean>, Boolean, Boolean)
其中三个已被声明为过时,附带以下消息:
此方法已过时,并将在将来的版本中移除。建议使用 LoggerFactory 配置筛选和 ConsoleLoggerOptions 配置日志记录选项。
对于第3个构造函数,使用包含 ConsoleLoggerProvider
的 LoggerFactory
是很简单的(根据 Entity Framework Core - Logging 文档):
var loggerFactory = new LoggerFactory(new[] { new ConsoleLoggerProvider((category, level) => level >= LogLevel.Information, true) });
但是由于它已被弃用,我们只能使用构造函数 #2。以下是我发现的等效方法:
但是由于它已被废弃,我们只剩下构造函数#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 });
这似乎过于复杂,我是否错过了更简单的东西?