1. 程式人生 > 實用技巧 >ASP.NET Core 禁止命令列列印日誌

ASP.NET Core 禁止命令列列印日誌

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>();
        });