Microsoft.Extensions.Logging日志级别配置失效,ApplicationInsights遭EF日志刷屏
解决ApplicationInsights被Microsoft.EntityFrameworkCore日志刷屏、日志级别配置失效的问题
问题根源
你在appsettings.Production.json里配置了"Logging": {},这个空对象会完全覆盖appsettings.json中的整个Logging节点配置,导致你原本设置的"Microsoft": "Warning"日志级别规则被清空。EF Core属于Microsoft.EntityFrameworkCore命名空间,失去级别限制后,所有相关日志都会被发送到ApplicationInsights。
解决方案
有两种处理方式,根据你的需求选择:
方式1:保留Production环境的Logging配置,精准控制级别
修改appsettings.Production.json的Logging节点,不要用空对象,而是明确保留或补充日志级别规则:
{ "Logging": { "LogLevel": { "Microsoft": "Warning", // 继承基础配置的规则,或按需调整 "Microsoft.EntityFrameworkCore": "Warning" // 也可以单独针对EF Core设置更严格的级别,比如"Error" }, "ApplicationInsights": { // 如果需要覆盖基础配置的ApplicationInsights日志设置,在这里添加,否则可省略 } }, ... }
方式2:让Production环境完全继承基础配置
如果Production环境不需要修改Logging相关设置,直接删除appsettings.Production.json中的"Logging": {}节点即可。ASP.NET Core会自动合并并使用appsettings.json里的Logging配置。
验证配置是否生效
可以在应用启动时添加一段代码,验证当前日志级别配置是否正确加载:
// 在Program.cs的app.Run()之前添加 var loggerFactory = app.Services.GetRequiredService<ILoggerFactory>(); var configLogger = loggerFactory.CreateLogger("ConfigValidation"); configLogger.LogInformation("当前Microsoft命名空间日志级别:{Level}", loggerFactory.CreateLogger("Microsoft").IsEnabled(LogLevel.Warning) ? "Warning" : "未生效");
内容的提问来源于stack exchange,提问作者Richard Barraclough
相关产品推荐
相关产品推荐

