【发布时间】:2015-05-13 03:27:33
【问题描述】:
我们在 C# 服务中使用 NLog 进行日志记录。文件命名是这样的:
<target name="StdLogFile"
xsi:type="File"
fileName="${LogFolder}/the-app.log"
layout="${longdate} [${uppercase:${level}}] ${message} @(${logger})"
archiveEvery="Day"
archiveNumbering="Date"
archiveDateFormat="yyyy-MM-dd"
archiveFileName="${LogFolder}/the-app_{#}.log"
maxArchiveFiles="14"
autoFlush="true" />
即:
- 当前日志文件将为
the-app.log - 归档日志将是
the-app_2015-03-10.log
我们现在遇到了问题,由于一些测试,字段the-app_x.log 在日志文件夹中。 这阻止了日志轮换,NLog 完全停止了记录到文件。
详情:
包含的日志文件夹:
-
前一天的
the-app.log -
前一天的
the-app_x.log -
the-app_2015-..-..等较早的存档文件
NLog 未能将现有 the-app.log 旋转为存档名称 TRDS-Import_2015-03-10.log 并且 未 附加到现有 the-app.log。
将“the-app_x.log”重命名为“X the-app_x.log”解决了这个问题,即 NLog 然后重命名并为今天创建了一个新的日志文件。
我们该怎么做:
a) 确保日志轮换始终有效?
b) 如果打开日志文件失败,使应用程序出错并退出?
【问题讨论】:
-
@user3240361 - 不,它没有帮助。我的配置没问题,它做了它应该做的事情,除非在日志文件夹中有一个“流氓”文件。 (那是一个相当不起眼的问题。)我不太明白这与链接的问题有什么关系,对不起。
-
只是为了澄清一下,只有当文件出现在与您的命名方案不匹配的日志目录时才会发生这种情况?在其他任何情况下都会发生这种情况吗?
-
@JNYRanger:我不能说“只有”,我可以肯定地说,带有
_x.log后缀而不是正确日期后缀的文件的存在搞砸了。将此文件重命名为其他内容可以修复它,即轮换旧日志并创建新日志文件。 -
明白了。好吧,我为您的问题的错误和退出部分发布了答案,但我需要进行一些挖掘以确定轮换问题。我觉得这与使用归档功能和顺序日志文件编号的组合有关,因为它读取目录以确定下一个编号。