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

使用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 03:52:06