NLog配置问题:归档日志目录需用前一日日期命名
解决方案
问题出在你使用了${date}布局渲染器,它获取的是执行归档操作的当前日期,而非被归档日志对应的日期。NLog内置了专门用于归档场景的${archive-date}渲染器,能精准获取被归档日志所属的日期,只需修改配置即可解决问题:
修改appsettings.json中的NLog Target配置
将archiveFileName里的${date}替换为${archive-date}:
"targets": { "Info": { "type": "File", "createDirs": true, "layout": "${longdate}|${level:uppercase=true}|${message}", "archiveEvery": "Day", "archiveFileName": "${logPath}\\Archive\\archived-${archive-date:format=yyyy.MM.dd}\\Info.log", "fileName": "${logPath}\\Info.log" } }
关键说明
${archive-date}会自动关联被归档日志的所属日期:比如10月26日首次启动时,系统归档的是10月25日的日志,该渲染器就会返回2023.10.25,对应生成archived-2023.10.25子目录。- 保持
fileName不变,满足你“日志文件名不包含日期”的要求。 - 注意JSON中路径的转义:确保
logPath的值是"D:\\Logs"(双反斜杠),否则会出现路径解析错误。
内容的提问来源于stack exchange,提问作者tamas
相关产品推荐
相关产品推荐

