.NET Core无nlog.config时配置NLog.Web.AspNetCore扩展的方法
在ASP.NET Core中用代码配置NLog并启用NLog.Web.AspNetCore扩展
1. 先确保安装依赖
必须通过NuGet安装NLog.Web.AspNetCore包,这是启用该扩展的基础前提。
2. 代码配置的正确实现
NLog.Web.AspNetCore扩展不需要通过AddExtension方法手动添加,它会在程序集加载时自动注册,只需确保在配置流程中触发扩展初始化即可,以下是两种可行方式:
方式一:结合ASP.NET Core主机构建流程
直接在Program.cs的主机构建阶段,将你的代码配置传入NLog的扩展方法:
var builder = WebApplication.CreateBuilder(args); // 构建你的NLog代码配置 var config = new LoggingConfiguration(); // 配置数据库目标(保留你的原有逻辑) var dbTarget = new DatabaseTarget(); // 补充数据库目标的具体配置(如连接字符串、日志命令等) config.AddTarget("database", dbTarget); // 添加日志规则 var dbRule = new LoggingRule("*", LogLevel.Info, dbTarget); config.LoggingRules.Add(dbRule); // 清除默认日志提供器,应用NLog配置并启用Web扩展 builder.Logging.ClearProviders(); builder.Host.UseNLog(config); var app = builder.Build(); // 后续中间件配置... app.Run();
方式二:纯代码前置配置(不依赖主机扩展方法)
如果需要在主机初始化前完成NLog配置,可手动触发NLog.Web扩展的初始化:
// 先触发NLog.Web.AspNetCore扩展加载 NLog.Web.NLogWebHelper.RegisterAspNetCore(); // 构建你的代码配置 var config = new LoggingConfiguration(); // 配置数据库目标和规则(你的原有逻辑) var dbTarget = new DatabaseTarget(); // 补充数据库目标配置 config.AddTarget("database", dbTarget); var dbRule = new LoggingRule("*", LogLevel.Info, dbTarget); config.LoggingRules.Add(dbRule); // 应用NLog配置 LogManager.Configuration = config; // 构建ASP.NET Core主机 var builder = WebApplication.CreateBuilder(args); builder.Logging.ClearProviders(); builder.Logging.AddNLog(); var app = builder.Build(); // 后续中间件配置...
关键注意点
config.AddExtension是用来加载自定义NLog扩展(比如自制的日志目标、布局渲染器)的,官方的NLog.Web.AspNetCore扩展不需要用这个方法注册。- 若未安装
NLog.Web.AspNetCore包,扩展相关的ASP.NET Core专属功能(如请求上下文日志、用户信息渲染等)会无法使用。
内容的提问来源于stack exchange,提问作者Dave B 84
相关产品推荐
相关产品推荐

