.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
相关产品推荐
相关产品推荐

