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

.NET5.0控制台用DI+appsettings.json配置Nlog写数据库报错如何解决

NLog写入数据库报错解决方案

核心报错原因处理

Target cannot be found: 'Database'报错是因为Database Target属于NLog独立扩展组件,没有包含在基础NLog依赖包中,需要两步配置修复:

  • 第一步:安装NuGet包 NLog.Database,注意要和你项目中已安装的NLog核心包版本保持一致,避免出现兼容问题
  • 第二步:在appsettings.json的NLog扩展配置节点中添加NLog.Database的程序集声明,修改后的extensions配置如下:
"extensions": {
  "NLog.Extensions.Logging": {
    "assembly": "NLog.Web.AspNetCore"
  },
  "NLog.Database": {
    "assembly": "NLog.Database"
  }
},

完成以上两步后,NLog就能正常识别Database类型的目标,不会再报找不到dbTarget的错误。

appsettings.json替代nlog.config的说明

你的理解是正确的,无需单独维护nlog.config文件,完全可以将所有NLog配置放在appsettings.json中。要确保该功能正常生效,满足两个条件即可:

  • 使用的NLog.Extensions.Logging包版本≥1.5.0,该版本开始原生支持从appsettings.json加载配置
  • 可以在注入NLog时显式指定配置源,避免默认读取nlog.config,修改你的日志注入代码如下:
services.AddLogging(loggingBuilder =>
{
    loggingBuilder.ClearProviders();
    // 显式传入当前上下文的配置,读取appsettings.json的NLog节点
    loggingBuilder.AddNLog(context.Configuration);
});

后续排查建议

  • 确认已安装Microsoft.Data.SqlClientNuGet包,和你配置的dbProvider驱动匹配
  • 检查数据库连接字符串权限,以及Logs表结构和你配置的插入语句、参数是否匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 04:24:05