NLog.config配置文件怎么写 日志输出到文件

1次阅读

要让NLog输出日志到文件,需在NLog.config中配置file类型target并用rules路由日志;fileName推荐用${basedir}避免路径问题,支持${shortdate}等渲染器实现按天归档,layout可自定义格式,配置后需设“始终复制”并验证日志生成。

NLog.config配置文件怎么写 日志输出到文件

要让 NLog 把日志输出到文件,核心是正确配置 NLog.config 文件(xml 格式),并确保目标(target)为 File,同时用规则(rules)把日志路由过去。

基础结构:NLog.config 文件骨架

在项目根目录或输出目录(如 bin/Debug)下新建一个名为 NLog.config 的 XML 文件,内容大致如下:


        xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”>

  
    
    app.log” />
  

  
    
    
  

常用文件配置项说明

fileName 支持布局渲染器(Layout Renderers),灵活控制路径和文件名:

  • ${basedir}:程序运行目录(推荐,避免硬编码路径)
  • ${shortdate}:如 2024-06-15,适合按天分文件
  • ${longdate}:精确到毫秒的时间戳,可用于单行时间格式
  • ${processid}${threadid}:多进程/线程时防冲突
  • ${level}:可按级别分文件(如 Error.log、info.log)

例如,按日期滚动的常见写法:

  name=”fileTarget”
  fileName=”${basedir}/logs/${shortdate}.log”
  archiveFileName=”${basedir}/logs/archives/log.{#}.txt”
  archiveEvery=”Day”
  archiveNumbering=”Rolling”
  maxArchiveFiles=”30″
  encoding=”utf-8″ />

日志内容格式(layout)怎么定制?

默认输出较简略。加 layout 属性可自定义每行日志样式:

  name=”fileTarget”
  fileName=”${basedir}/logs/app.log”
  layout=”${longdate} [${level:uppercase=true}] ${logger} ${message} ${exception:format=tostring}” />

常用占位符:

  • ${longdate}:2024-06-15 14:23:05.123
  • ${level:uppercase=true}:INFO / ERROR
  • ${logger}:记录日志时的 logger 名(如 MyApp.Services.UserService
  • ${message}:实际日志内容
  • ${exception:format=tostring}:完整异常(仅当有异常时输出)

验证是否生效的小技巧

写完配置别急着跑业务,先快速验证:

  • 确保 NLog.config 的“复制到输出目录”属性设为“始终复制”(VS 中右键文件 → 属性)
  • 代码中获取 logger 后,手动写一条日志:
    var logger = LogManager.GetCurrentClasslogger();
    logger.Info(“NLog 测试日志已发出”);
  • 检查程序运行目录下是否生成了 logs/app.log,且内容符合预期
  • 如果没日志,打开 NLog 内部日志排查:

基本上就这些。不复杂但容易忽略路径权限、文件权限或配置未复制的问题。保持 fileName${basedir} 开头,基本能避开大部分路径坑。

text=ZqhQzanResources