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

求助:NLog无法在Documents等目录生成日志文件怎么解决

NLog无法写入Documents等目录的解决方案

问题描述

我的NLog文件目标配置如下:

"allLogFile": {
  "type": "file",
  "fileName": "C:\Users\myUserName\Documents\logs\Log.txt",
  "archiveFileName": "C:\Users\myUserName\Documents\logs\Log.{#}.txt",
  "archiveNumbering": "Date",
  "archiveEvery": "Day",
  "archiveDateFormat": "yyyyMMdd",
  "layout": "${longdate}| ${uppercase:${level}}|  ${logger}|  ${message}   ${exception:format=tostring}"
}

该配置无法在Documents目录生成日志文件,但改为桌面路径"C:\Users\myUserName\Desktop\logs\Log.txt"可正常工作。尝试Pictures、Downloads、C盘等路径均无效,使用${specialfolder:folder=MyDocuments}\logs\Log.txt路径也失败。已开启"throwConfigExceptions": true但未抛出配置异常,推测是写入阶段的权限或路径问题。

解决方法

  • 确保目录自动创建:NLog默认不会自动创建多级子目录,需在file目标中添加createDirs: true配置,同时修正JSON路径的转义问题(单反斜杠需改为双反斜杠,或使用正斜杠):

    "allLogFile": {
      "type": "file",
      "fileName": "${specialfolder:folder=MyDocuments}\\\\logs\\\\Log.txt",
      "archiveFileName": "${specialfolder:folder=MyDocuments}\\\\logs\\\\Log.{#}.txt",
      "archiveNumbering": "Date",
      "archiveEvery": "Day",
      "archiveDateFormat": "yyyyMMdd",
      "layout": "${longdate}| ${uppercase:${level}}|  ${logger}|  ${message}   ${exception:format=tostring}",
      "createDirs": true
    }
    

    也可直接使用正斜杠避免转义:"${specialfolder:folder=MyDocuments}/logs/Log.txt"

  • 验证应用权限:

    • 普通桌面应用可右键以管理员身份运行,测试是否因权限不足导致写入失败;
    • UWP/WPF等受沙箱限制的应用,需在应用清单中声明访问Documents等目录的权限。
  • 启用NLog内部日志排查:添加内部日志配置,查看写入失败的具体原因:

    "internalLogLevel": "Warn",
    "internalLogFile": "C:\\temp\\nlog-internal.log"
    

    日志文件会记录NLog运行时的错误信息(如权限拒绝、路径解析错误等),帮助定位问题根源。

内容的提问来源于stack exchange,提问作者Fjalee

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 21:05:21