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

NLog 4.6.6配置求助:按日期建文件夹、启动时间命名日志文件

修正NLog配置实现按日期文件夹+启动时间文件名及跨天自动切换

问题分析

你当前的配置无法生成日志,核心原因有两点:

  1. cached布局的语法错误,错误地缓存了整个路径且变量嵌套格式不正确,导致NLog无法解析目标路径
  2. 未开启自动创建文件夹的配置,若目标日期文件夹不存在,日志无法写入

正确配置方案

以下配置完全符合你的需求:日志文件夹按当前日期命名,日志文件按程序启动时间命名,跨天运行时自动创建新日期文件夹与对应日志文件:

<target name="logfile"
        xsi:type="File"
        fileName="C:\AppLogs\Logs\${date:format=yyyy-MM-dd}\${cached:inner=${date:format=HH.mm.ss}}.log"
        layout="[${longdate}]  ${level:uppercase=false} Assembly: ${processname:fullName=false} Class.Method: ${callsite:includeNamespace=false}: ${callsite-linenumber}&#10;${message}"
        createDirs="true" />

关键配置说明

  • createDirs="true":强制NLog自动创建不存在的日期文件夹,避免因文件夹缺失导致日志写入失败
  • 日期文件夹部分:${date:format=yyyy-MM-dd} 会在每次写入日志时计算当前日期,跨天后自动切换到新的日期文件夹
  • 日志文件名部分:${cached:inner=${date:format=HH.mm.ss}} 仅在程序启动时计算一次时间,确保文件名固定为启动时间,不会像原配置那样每秒生成新文件
  • XML换行处理:用&#10;替代布局中的\n,符合XML属性的转义规则

原配置错误点解析

  1. 你之前的配置将整个路径放入cached中,导致日期文件夹被固定为程序启动时的日期,跨天后无法自动切换,同时XML属性内的变量嵌套格式错误,NLog无法正确解析路径
  2. 未设置createDirs="true",若目标文件夹不存在,NLog默认不会创建,直接导致日志无法生成

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 16:17:42