ASP.NET Core 禁止命令列列印日誌
阿新 • • 發佈:2020-12-04
CreateDefaultBuilder(args) 中預設添加了 ConsoleLoggerProvider,但是在某些場景如果不希望在命令列顯示日誌
方法一,遍歷所有 LoggerProvider ,找到並移除 ConsoleLoggerProvider
public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureLogging((hostingContext, loggingBuilder)=> {// remove ConsoleLoggerProvider service in Production Environment if (hostingContext.HostingEnvironment.IsProduction()) { foreach (ServiceDescriptor serviceDescriptor in loggingBuilder.Services) { if (serviceDescriptor.ImplementationType == typeof(Microsoft.Extensions.Logging.Console.ConsoleLoggerProvider)) { loggingBuilder.Services.Remove(serviceDescriptor); break; } } } }) .ConfigureWebHostDefaults(webBuilder=> { webBuilder.UseStartup<Startup>(); });
方法二,清空 CreateDefaultBuilder(args) 新增的所有 LoggerProvider,然後重新新增自己需要的 LoggerProvider
public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureLogging((hostingContext, loggingBuilder) => { // clear all previously registered providers loggingBuilder.ClearProviders(); // now register providers you need loggingBuilder.AddDebug(); loggingBuilder.AddEventSourceLogger(); if (hostingContext.HostingEnvironment.IsDevelopment()) { loggingBuilder.AddConsole(); } }) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); });