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

Nlog相同配置在新项目无法生成日志文件问题咨询

NLog不写入文件问题排查方案

核心问题根因(优先级最高)

你提供的NLog配置存在语法结构错误,缺少根节点与必要命名空间,导致NLog无法识别加载配置,因此内部日志、业务日志均不会生成:

  • XML声明后的autoReload、internalLogLevel等属性没有归属的<nlog>根节点
  • 缺少NLog必备的XML命名空间声明,配置文件格式不合法

全量排查步骤

  • 替换为合法的完整配置文件,示例如下:
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      autoReload="true"
      internalLogLevel="Trace"
      internalLogFile="c:\temp\internal-nlog.txt">
  <targets>
    <target name="file" xsi:type="File"
        layout="${longdate} ${logger} ${message}${exception:format=ToString}"
        fileName="C:\beka\logs\logfile.txt" />
    <target name="exceptions" xsi:type="File"
        layout="${longdate} ${logger} ${message}${exception:format=ToString}"
        fileName="C:\beka\logs\logfileExceptions.txt" />
  </targets>
  <rules>
    <logger name="*" minlevel="Trace" writeTo="file" />
    <logger name="*" minlevel="Error" writeTo="exceptions" />
  </rules>
</nlog>
  • 确认配置文件放置位置与属性:
    配置文件必须放在启动项目的根目录,文件名为NLog.config(跨平台场景注意大小写),再确认「生成操作=Content」「复制到输出目录=如果较新则复制」的配置生效,编译后检查输出目录(bin/Debug、bin/Release)下存在该配置文件
  • 手动强制开启内部日志排查加载错误:
    在程序入口的最开头添加以下代码,强制输出内部日志,可直接定位配置加载失败的具体原因:
NLog.Common.InternalLogger.LogLevel = NLog.LogLevel.Trace;
NLog.Common.InternalLogger.LogFile = @"c:\temp\internal-nlog.txt";
NLog.Common.InternalLogger.LogToConsole = true;
  • 检查目录权限:
    手动创建c:\temp、C:\beka\logs两个目录,确认当前运行程序的进程身份(如控制台用户、IIS应用池身份)对两个目录拥有写入权限
  • 确认框架适配逻辑:
    如果是ASP.NET Core/.NET 5+项目,需在Program.cs中正确注册NLog服务,示例如下:
var builder = WebApplication.CreateBuilder(args);
builder.Host.UseNLog(); // 必须添加该行加载NLog配置

内容的提问来源于stack exchange,提问作者Bartosz Bogatynia Medycki

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 22:09:03