You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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

火山引擎 最新活动