NLog.config 是 NLog 框架的核心 XML 配置文件,需放在根目录并设为“始终复制”,包含 targets(输出目标)、rules(日志规则)及标准命名空间,支持控制台、文件等多目标输出与精准级别过滤。

NLog.config 文件是 NLog 日志框架的核心配置入口,用 XML 格式定义日志写到哪、按什么规则写、格式长什么样。只要文件位置正确、结构合法、目标和规则匹配,日志就能自动生效。
配置文件放哪才有效
NLog 启动时会按固定顺序查找配置,找到第一个就停止搜索,找不到直接失败:
- 独立程序(.exe)优先查:
MyApp.exe.config→MyApp.exe.nlog→NLog.config(必须叫这个名字,大小写敏感)→NLog.dll.nlog - ASP.NET 程序优先查:
web.config→web.nlog→NLog.config→NLog.dll.nlog - 推荐统一用
NLog.config,放在项目根目录,并在 Visual Studio 中右键文件 → 属性 → “复制到输出目录”设为“如果较新则复制”或“始终复制”
基础XML结构三要素
一个最小可用的 NLog.config 必须包含 <targets>、<rules>,且根节点带标准命名空间:
-
<targets>:定义“写到哪”,比如文件、控制台、数据库。每个<target>要有唯一name和xsi:type(如File、Console) -
<rules>:定义“谁写、写什么级别、写到哪个 target”,靠name(支持通配符*)、minlevel(如Info)、writeTo关联起来 - 根节点要声明命名空间:
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
示例(控制台+文件双输出):
<?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">
<targets>
<target name="console" xsi:type="Console" />
<target name="file" xsi:type="File" fileName="${basedir}/logs/app-${shortdate}.log" />
</targets>
<rules>
<logger name="*" minlevel="Info" writeTo="console" />
<logger name="*" minlevel="Debug" writeTo="file" />
</rules>
</nlog>
常用 target 配置技巧
文件输出最常用,几个关键点能避免踩坑:
- 路径用变量更安全:
${basedir}指向程序运行目录,${shortdate}自动生成日期(如2025-12-11) - 归档设置别漏:
archiveEvery="Day"每天新建文件,maxArchiveDays="30"自动清理30天前日志 - 异常要显式记录:
layout="${longdate} ${level} ${message} ${exception:format=ToString}"才能打出堆栈 - 性能优化加一层:
<target xsi:type="AsyncWrapper">...</target>包裹 File target,异步写入不阻塞主线程
rules 规则怎么写才精准
规则不是越多越好,关键是匹配逻辑清晰:
-
name="*"匹配所有 logger;name="MyApp.Services.*"只匹配该命名空间下的日志器 - 级别从低到高:Trace → Debug → Info → Warn → Error → Fatal,
minlevel="Info"就不会记录 Debug 及以下 - 同名 logger 多条规则时,按顺序匹配,第一条命中即写入对应 target(可 writeTo 多个,用逗号分隔)
- 想屏蔽某类日志?加一条
<logger name="Microsoft.*" minlevel="Off" final="true" />,final="true"表示终止后续匹配
基本上就这些。配置不复杂但容易忽略细节,比如文件没复制、命名空间写错、路径变量拼错——检查 internal log(开 internalLogFile)能快速定位问题。










