如何在C#控制台应用中禁用"info:"日志消息?
关闭C#控制台应用的Info级别日志输出
方法1:通过配置文件修改(适用于使用Microsoft.Extensions.Logging的项目)
如果项目依赖appsettings.json配置日志,直接调整日志级别过滤Info输出:
- 打开
appsettings.json,定位到Logging节点 - 将控制台(Console)的最低日志级别设为
Warning或更高(如Error、Critical),即可过滤Info及以下级别的日志。
示例配置:
{ "Logging": { "LogLevel": { "Default": "Warning", "Microsoft.AspNetCore": "Warning" }, "Console": { "LogLevel": { "Default": "Warning" } } } }
方法2:在代码中直接配置日志过滤(Program.cs中设置)
如果在Program.cs构建主机时配置日志,可直接指定控制台日志的最低输出级别:
.NET 6+ 顶级语句示例:
var builder = WebApplication.CreateBuilder(args); // 配置日志 builder.Logging.ClearProviders(); // 清除默认日志提供器(可选操作) builder.Logging.AddConsole(options => { options.LogToStandardErrorThreshold = LogLevel.Warning; // 仅输出Warning及以上级别日志 }); var app = builder.Build(); // ... 其他业务代码 app.Run();
传统Program.cs结构示例:
public class Program { public static void Main(string[] args) { CreateHostBuilder(args).Build().Run(); } public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureLogging(logging => { logging.ClearProviders(); logging.AddConsole(options => { options.LogToStandardErrorThreshold = LogLevel.Warning; }); }) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); }); } }
方法3:针对Serilog日志框架的配置
如果项目使用Serilog日志框架,可通过以下方式调整:
- 在
appsettings.json中修改MinimumLevel:
{ "Serilog": { "MinimumLevel": { "Default": "Warning", "Override": { "Microsoft": "Warning", "System": "Warning" } }, "WriteTo": [ { "Name": "Console" } ] } }
- 或直接在代码中配置:
Log.Logger = new LoggerConfiguration() .MinimumLevel.Warning() .WriteTo.Console() .CreateLogger(); var builder = WebApplication.CreateBuilder(args); builder.Host.UseSerilog(); // ... 其他业务代码
内容的提问来源于stack exchange,提问作者s.k.paul
相关产品推荐
相关产品推荐

