date - 归档时 NLog 不正确的日期

标签 date nlog archiving

我想使用归档来限制日志文件的数量,并且我希望每个归档日志的文件名是日志的来源日期。很简单。

这是我的目标之一:

<target xsi:type="File" name="info" fileName="${basedir}/logs/info.log"
        layout="${date:format=HH\:mm\:ss}&#009;|&#009;${uppercase:${level}}&#009;|&#009;${message}"
        archiveEvery="Day"
        archiveFileName="${basedir}/logs/archive/info/${shortdate}.{#}.log"
        archiveNumbering="Rolling"
        maxArchiveFiles="30"/>

我读到您必须在 archiveFileName 中包含 {#},否则当您在文件名中包含日期时,归档将根本无法工作,这有点烦人,但我想我可以接受。

但是,因为归档是在日期更改之后执行的,${shortdate} 将始终成为 一天的日期,即一天(或更多天)在所需日期之后。如果一条消息在今天 2013-06-12 被记录,那么当它明天被归档时,它将被放置在一个名为 2013-06-13.log 的文件中。

是否有任何方法来获得正确的日期?我看到有人建议使用变量,但我不知道它是如何工作的……这似乎是一个显而易见的特性。它应该绝对是archiveNumbering 模式之一!与日期相比,现在可用的编号模式似乎非常不切实际。

这个问题有点相关Delete log files after x days .如果可以在不使用归档功能的情况下设置日志文件的最大数量(因为这是我真正想要的归档功能),那实际上会更好,因为我也不必使用 {#},但我怀疑这是不可能的。

最佳答案

NLog 自发布此问题后添加了编号格式“日期”,这正是我正在寻找的格式。

参见 https://github.com/nlog/NLog/wiki/File-target#archival-options获取更多信息。

关于date - 归档时 NLog 不正确的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17064890/

相关文章:

c# - 当给定的事件属性不存在时,如何为文件目标指定默认路径?

iphone - 存档可变数组 - doesNotRecognizeSelector 异常

excel - CDate 能识别澳大利亚日期格式吗?

javascript - 在javascript中将毫秒字符串转换为日期

swift - 快速将 2 位数年份转换为 4 位数年份

ios - 调用 ZipZap 的 updateEntries 方法会导致 Swift 崩溃

ios - 静态库公共(public) header 未复制到 Build/Products 文件夹

php - Carbon.php 找不到分隔符号 数据丢失

asp.net - NLogConfigurationException - 从 'System.String' 到 'System.Uri' 的无效转换

unit-testing - NLog 与 VS 2008 单元测试