NLog.config文件怎么配置 NLog日志XML配置方法

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

NLog.config 文件是 NLog 日志框架的核心配置入口,用 XML 格式定义日志写到哪、按什么规则写、格式长什么样。只要文件位置正确、结构合法、目标和规则匹配,日志就能自动生效。

配置文件放哪才有效

NLog 启动时会按固定顺序查找配置,找到第一个就停止搜索,找不到直接失败:

  • 独立程序(.exe)优先查:MyApp.exe.configMyApp.exe.nlogNLog.config(必须叫这个名字,大小写敏感)→ NLog.dll.nlog
  • ASP.NET 程序优先查:web.configweb.nlogNLog.configNLog.dll.nlog
  • 推荐统一用 NLog.config,放在项目根目录,并在 Visual Studio 中右键文件 → 属性 → “复制到输出目录”设为“如果较新则复制”或“始终复制”

基础XML结构三要素

一个最小可用的 NLog.config 必须包含 ,且根节点带标准命名空间:

  • :定义“写到哪”,比如文件、控制台、数据库。每个 要有唯一 namexsi:type(如 FileConsole
  • :定义“谁写、写什么级别、写到哪个 target”,靠 name(支持通配符 *)、minlevel(如 Info)、writeTo 关联起来
  • 根节点要声明命名空间:

示例(控制台+文件双输出):



  
    
    
  

  
    
    
  

常用 target 配置技巧

文件输出最常用,几个关键点能避免踩坑:

  • 路径用变量更安全:${basedir} 指向程序运行目录,${shortdate} 自动生成日期(如 2025-12-11
  • 归档设置别漏:archiveEvery="Day" 每天新建文件,maxArchiveDays="30" 自动清理30天前日志
  • 异常要显式记录:layout="${longdate} ${level} ${message} ${exception:format=ToString}" 才能打出堆栈
  • 性能优化加一层:... 包裹 File target,异步写入不阻塞主线程

rules 规则怎么写才精准

规则不是越多越好,关键是匹配逻辑清晰:

  • name="*" 匹配所有 logger;name="MyApp.Services.*" 只匹配该命名空间下的日志器
  • 级别从低到高:Trace → Debug → Info → Warn → Error → Fatal,minlevel="Info" 就不会记录 Debug 及以下
  • 同名 logger 多条规则时,按顺序匹配,第一条命中即写入对应 target(可 writeTo 多个,用逗号分隔)
  • 想屏蔽某类日志?加一条 final="true" 表示终止后续匹配

基本上就这些。配置不复杂但容易忽略细节,比如文件没复制、命名空间写错、路径变量拼错——检查 internal log(开 internalLogFile)能快速定位问题。