【发布时间】:2018-05-24 05:42:32
【问题描述】:
NLog 中是否有任何选项/配置来设置最大日志文件大小(例如 5MB)?
我需要的是,当日志文件超过最大大小(我定义的)时,它将备份旧的(以时间戳作为文件名),并开始写入新的。
如何做到这一点? 我更喜欢某种内置配置,但如果没有,可以手动安全地完成而不损坏日志文件吗?
【问题讨论】:
NLog 中是否有任何选项/配置来设置最大日志文件大小(例如 5MB)?
我需要的是,当日志文件超过最大大小(我定义的)时,它将备份旧的(以时间戳作为文件名),并开始写入新的。
如何做到这一点? 我更喜欢某种内置配置,但如果没有,可以手动安全地完成而不损坏日志文件吗?
【问题讨论】:
您可以设置archiveNumbering="DateAndSequence"和archiveAboveSize="5000000"
<targets>
<target xsi:type="File"
archiveNumbering="DateAndSequence"
archiveAboveSize="5000000"
// other config
</targets>
如果您使用的是archiveAboveSize,请参阅here 的此说明
archiveAboveSize - 日志文件的大小(以字节为单位) 自动存档。长期警告:启用此选项可以 在多进程场景中大大减慢您的文件日志记录。 如果只有一个进程将写入文件,请考虑 将 ConcurrentWrites 设置为 false 以获得最佳性能。警告: 不支持将此模式与存档编号日期结合使用。 存档文件不合并。 DateAndSequence 将起作用
【讨论】:
archiveAboveSize 应该可以解决问题。它设置将用作归档条件的大小(字节)...
如果要将archiveFileName设置为时间戳,可以使用${ticks}。但我更喜欢将日期与序列号结合起来,以获得更好的可读性。
【讨论】:
从 4.5.7 版开始,您可以组合 archiveAboveSize 和 archiveNumbering="Date":
日期 - 日期样式编号。日期格式根据 archiveDateFormat 的值。
- 警告:在 NLog 版本之前。 4.5.7 那么这将无法与archiveAboveSize 一起使用。较新的版本将正确合并到
存档中的现有文件。
https://github.com/nlog/NLog/wiki/File-target#size-based-file-archival
【讨论】: