You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何同时使用NLog实现基于大小和时间的日志归档?

结合NLog的大小与时间双重日志归档方案

嘿,我刚好之前处理过一模一样的需求,其实NLog的FileTarget原生就支持同时基于大小和时间触发归档,根本不用分开配置两套规则,只要把对应的参数组合起来就能实现你要的效果:当日志文件超过10MB时立即归档,同时每天自动生成新的日志文件(哪怕当天文件没到10MB)。

完整配置示例

下面是一个可直接复用的NLog配置片段,我会逐行解释关键参数的作用:

<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

  <targets>
    <!-- 主日志输出目标 -->
    <target name="dailySizeRollingFile" 
            xsi:type="File" 
            fileName="${basedir}/logs/current_log.txt"
            <!-- 归档文件名格式:日期+序号,避免重名冲突 -->
            archiveFileName="${basedir}/logs/archive/log_${shortdate}_{#####}.txt"
            <!-- 大小阈值:10MB(单位为字节,10*1024*1024=10485760) -->
            archiveAboveSize="10485760"
            <!-- 启用每日归档周期 -->
            archiveEvery="Day"
            <!-- 归档文件编号方式:按序列递增 -->
            archiveNumbering="Sequence"
            <!-- 最多保留100个归档文件(可根据存储需求调整) -->
            maxArchiveFiles="100"
            <!-- 优化写入性能的配置 -->
            concurrentWrites="true"
            keepFileOpen="true"
            <!-- 自定义日志格式(可根据需求修改) -->
            layout="${longdate} ${level:uppercase=true} ${logger} - ${message} ${exception:format=ToString}" />
  </targets>

  <rules>
    <logger name="*" minlevel="Info" writeTo="dailySizeRollingFile" />
  </rules>
</nlog>

关键参数详解

  • archiveAboveSize="10485760":设定单日志文件的最大容量为10MB,一旦当前文件达到这个大小,NLog会立即将其归档,并创建新的当前日志文件继续写入。
  • archiveEvery="Day":开启每日归档规则,到第二天零点时,不管当前文件大小如何,都会触发归档操作,生成新的当日日志文件。
  • archiveFileName="${basedir}/logs/archive/log_${shortdate}_{#####}.txt":归档文件名同时包含日期(${shortdate},格式如2024-05-20)和5位序号(${#####}),这样既区分了不同日期的归档,也能在同一天内生成多个超大小阈值的归档文件(比如log_2024-05-20_00001.txt、log_2024-05-20_00002.txt)。
  • archiveNumbering="Sequence":指定归档文件的编号方式为序列递增,确保同一天内的多个归档文件不会重名覆盖。

实际运行效果

  • 当日志量较大,不到一天就超过10MB:NLog会即时归档当前文件,生成带序号的归档文件,然后继续写入新的当前日志;若再次达到大小阈值,会重复该流程。
  • 当日志量较小,全天未到10MB:到次日零点时,NLog会自动将当天的文件归档(序号为00001),并创建新的当日日志文件。

这样就完美实现了你需要的「大小+时间」双重归档逻辑啦!

内容的提问来源于stack exchange,提问作者ram dvash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 14:12:46