ASP.NET Core 6项目中Serilog仅记录错误至SQL Server,无法记录信息日志的解决方案咨询
解决Serilog无法记录Information级别日志到SQL Server的问题
你的问题出在两处配置限制,不需要修改核心业务代码,调整appsettings.json里的Serilog配置就能解决,具体步骤如下:
1. 调整全局最低日志级别
当前你的Serilog.MinimumLevel.Default设置为Warning,这会让Serilog全局只处理Warning及以上(Error、Fatal)的日志,Information级别会被直接过滤。需要把它改成Information:
"MinimumLevel": { "Default": "Information", "Override": { // 保留你原有的Override配置(如果不需要修改的话) } }
2. 调整SQL Server写入器的级别限制
在WriteTo数组的MSSqlServer配置项里,你设置了"restrictedToMinimumLevel": "Warning"——这相当于给SQL写入器单独加了一道门槛,哪怕全局级别放开了,这里也会拦截Information日志。把它改成Information:
"Args": { // 其他数据库连接、表结构配置保持不变 "restrictedToMinimumLevel": "Information" }
代码层面的额外检查
看你提供的ConfigureLogging方法里,有两行被注释的代码:
//.MinimumLevel.Warning() //.Filter.ByExcluding((le) => le.Level == LogEventLevel.Information)
确保这两行保持注释(或者直接删除),如果它们被启用,会再次过滤掉Information级别的日志。
测试验证
修改完配置后重启项目,你在Main方法里写的Log.Information("App starting")应该就能成功写入APILogs表了。后续在业务代码里直接使用Log.Information("xxx")记录信息日志即可,无需额外修改代码。
内容的提问来源于stack exchange,提问作者Sunil Chaudhry




