c# - 如何修复过时的 ILoggerFactory 方法?
问题描述
我将我的项目升级到 .NET Core 2.2.x 并收到关于以下代码的过时警告 - 两行:
public void Configure(IApplicationBuilder app,
IHostingEnvironment env,
ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
修复的建议是The recommended alternative is AddConsole(this ILoggingBuilder builder)
。我以为这就是我正在使用的。
我在这里想念什么?
解决方案
我今天有同样的问题。
从 Startup.cs 中删除您的日志记录配置,然后转到您的 Program.cs 文件并添加如下内容:
var host = new WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.ConfigureLogging((hostingContext, logging) =>
{
logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging"));
logging.AddConsole();
logging.AddDebug();
})
.Build();
这使用了“builder”,因为变量“logging”是一个 IloggingBuilder(而您的代码仍在使用 ILoggerFactory)
更新:我刚刚尝试的另一种方法是留在 Startup.cs 中,但将日志内容从“配置”方法移动到“配置服务”,如下所示:
public void ConfigureServices(IServiceCollection services)
{
services.AddLogging(loggingBuilder =>
{
loggingBuilder.AddConfiguration(Configuration.GetSection("Logging"));
loggingBuilder.AddConsole();
loggingBuilder.AddDebug();
});
}
也许可以减少 Program.cs 的污染...
推荐阅读
- java - ProcessBuilder:没有“redirectOutput”,进程无法完成
- c# - 将对象绑定到具有编译时未知列的 WPF 数据网格
- c++ - 如何最好地比较两个编译的二进制文件?
- android - 如何在 USB 连接设备上调试 Android Studio 中的应用升级
- excel - 创建在单元格中隐藏具有特定单词的行的宏
- ssl - 如何弥补 Jsoup 中明显的 SSL 链不匹配?
- image - Access 2016 将图片大小限制为 600x800
- c# - 如何在不使用数据库的情况下将数据保存在 C# ASP.NET MVC 中?
- android - 调试风味变体如何依赖于发布代码
- kotlin - 为后端应用程序设置 kotlin 协程范围的正确方法