You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Npgsql与EF Core以记录PostgreSQL的RAISE NOTICE日志

Npgsql 5 + EF Core 5 记录PostgreSQL RAISE NOTICE 配置方法

Npgsql默认不会将PostgreSQL的NOTICE消息转发到EF Core的日志体系,你需要完成以下两步配置:

步骤1:调整DbContext注册配置

在你的服务注册代码(通常是Startup.cs的ConfigureServices方法,或者.NET 5的Program.cs)中,修改DbContext的注册逻辑,启用Npgsql通知类日志的输出:

using Npgsql.Logging; // 注意需要引入该命名空间

services.AddDbContext<你的自定义DbContext类名>(options =>
    options.UseNpgsql("你的数据库连接字符串", npgsqlOptions =>
    {
        // 保留你原有的Npgsql配置,比如超时、重试策略等
    })
    // 配置日志规则,捕获Npgsql通知事件
    .LogTo(
        filter: (category, level) => category == NpgsqlLoggerCategory.Database.Notification.Name && level == LogLevel.Information,
        level: LogLevel.Information
    ));

如果需要打印NOTICE携带的参数,可按需添加.EnableSensitiveDataLogging()配置,生产环境建议谨慎开启。

步骤2:更新appsettings.json日志配置

在已有的日志配置基础上,添加Npgsql相关类别的日志级别规则:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.EntityFrameworkCore": "Information",
      // 新增以下2条规则
      "Npgsql": "Information",
      "Npgsql.Database.Notification": "Information"
    }
  }
}

验证效果

完成上述配置后,执行包含RAISE NOTICE 'foo';的SQL语句时,你会在日志中看到类似以下的输出:

info: Npgsql.Database.Notification[0]
      NOTICE:  foo

内容的提问来源于stack exchange,提问作者lonix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 03:06:08