C# log4net没有保留正确数量的备份文件

C# log4net没有保留正确数量的备份文件,c#,.net,file,logging,log4net,C#,.net,File,Logging,Log4net,我有一个循环处理100000多个项目并在日志中大量写入这些项目的过程,我很难保存我需要的所有日志,因为log4net没有按我预期的方式工作 我的配置如下所示: <appender name="debug" type="log4net.Appender.RollingFileAppender"> <file value="logs\" /> <datePattern value="y

我有一个循环处理100000多个项目并在日志中大量写入这些项目的过程,我很难保存我需要的所有日志,因为log4net没有按我预期的方式工作

我的配置如下所示:

<appender name="debug" type="log4net.Appender.RollingFileAppender">
    <file value="logs\" />
    <datePattern value="yyyyMMdd'_DEBUG.log'" />
    <staticLogFileName value="false" />
    <appendToFile value="true" />
    <rollingStyle value="Composite" />
    <maxSizeRollBackups value="10" />
    <maximumFileSize value="10MB" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%newline[%date]-%level-%logger[%M]- Linea:%L - %message%newline"/>
    </layout>
    <filter type="log4net.Filter.LevelRangeFilter">
      <param name="LevelMin" value="debug"/>
      <param name="LevelMax" value="debug"/>
    </filter>
  </appender>

通过这种设置,我希望第一个文件一满,就创建第二个文件,然后创建第三个文件,以此类推,每天最多10个文件。我假设覆盖任何以前日志的唯一方法是拥有10个完整文件,接下来的条目必须重写第一个日志中的现有条目。但是,发生的情况是,我在第一个文件已满(并转换为第一个备份)后创建了一个文件,但在第二个文件已满后,它开始覆盖原始文件,而不是将其转换为另一个备份并转换为第三个文件

所以我最终得到了

20171005_DEBUG.log

20171005_DEBUG.log.1

除此之外,20171005_DEBUG.log将被覆盖

我可以通过将最大文件大小更改为100MB或任何非常大的大小来“修复”这个问题,但我更想知道我在这里做错了什么。有人吗?

换衣服吗

<rollingStyle value="Composite" />

要么

<rollingStyle value="Date" />


应该给你想要的行为

Composite
同时考虑了日期和大小



既然您声明要处理100.000多行日志,您是否考虑过将日志记录到数据库?

更改您的

<rollingStyle value="Composite" />

要么

<rollingStyle value="Date" />


应该给你想要的行为

Composite
同时考虑了日期和大小



既然你说要处理100.000多行日志,你有没有考虑改为登录数据库?

“既然你说要处理100.000多行日志,你有没有考虑改为登录数据库?”为什么?如果你不只是为了保存日志而保存日志,查询数据库中的日志事件要比解析日志文件方便得多。“既然你说要处理超过100.000行的日志,你考虑过改为登录数据库吗?”为什么?如果你不只是为了保存日志而保存日志,查询数据库中的日志事件要比解析日志文件方便得多。