NLog归档文件保留原文件名日期后缀的配置方案咨询
解决NLog归档时保留原始日志日期的问题
嘿,我刚好碰到过类似的困扰!你的问题核心在于${shortdate}这个布局渲染器在归档触发时,会读取当前系统日期(也就是午夜后的新日期),而不是你想要的原始日志对应的日期。要解决这个问题,你需要用NLog专门为归档场景设计的${archive}布局渲染器,它会自动获取待归档日志文件对应的原始日期。
修改后的NLog Target配置
<target xsi:type="File" name="tp" fileName="C:\Log\Log${shortdate}.log" archiveFileName="C:\Log\Log${archive:format=yyyy-MM-dd}.zip" archiveEvery="Day" maxArchiveFiles="365" enableArchiveFileCompression="true"> </target>
关键变化说明
- 把
archiveFileName中的${shortdate}替换成${archive:format=yyyy-MM-dd}:这个渲染器会识别待归档日志的原始日期(比如你例子中的2019-10-18),而不是归档时刻的当前日期(2019-10-19)。这样归档后的压缩包就会是Log-2019-10-18.zip,完美保留原日志的日期部分。 - 其他参数(
archiveEvery="Day"、maxArchiveFiles、enableArchiveFileCompression)保持不变即可,它们的作用和之前一致:每日归档、保留最多365个归档文件、开启压缩。
额外验证小提示
如果你不确定配置是否生效,可以手动触发归档测试(比如修改系统日期到午夜后,或者通过NLog的API强制归档),检查生成的压缩包文件名是否符合预期。
内容的提问来源于stack exchange,提问作者Slevin




