使用NLog.Web.AspNetCore的LoggerProvider时,NLog丢失CallSiteInformation如何解决?
NLog LogEventInfo 缺失调用站点信息的解决办法
问题描述
我开发了一个.NET Core应用,通过NLog.Web.AspNetCore包配置NLog日志,配置代码如下:
public void ConfigureNLog(WebApplicationBuilder builder) { builder.Logging.ClearProviders(); builder.Host.UseNLog(); }
但尝试访问调用站点信息时,LogEventInfo对象上没有对应数据。
解决步骤
- 检查NLog配置文件:在
nlog.config的根节点添加includeCallSite="true",或者在具体目标(Target)中启用该属性,示例:<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" includeCallSite="true"> <!-- 目标与规则配置 --> </nlog> - 代码配置方式:如果用代码而非XML配置NLog,需手动开启调用站点收集:
var config = new LoggingConfiguration(); config.SetDefaultConfigSetting("includeCallSite", "true"); // 添加工厂、目标等逻辑 LogManager.Configuration = config; - 版本检查:确保使用的NLog.Web.AspNetCore是最新稳定版,旧版本可能存在调用站点收集的兼容性问题。
- 性能提示:调用站点收集会产生一定性能开销,生产环境需根据实际需求权衡是否启用。
内容的提问来源于stack exchange,提问作者daniel.gratzl
相关产品推荐
相关产品推荐

