Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# log4net RollingFileAppender喷出大量日志,MaxSizerollBackup没有任何效果_C#_.net_Logging_Log4net_Log4net Appender - Fatal编程技术网

C# log4net RollingFileAppender喷出大量日志,MaxSizerollBackup没有任何效果

C# log4net RollingFileAppender喷出大量日志,MaxSizerollBackup没有任何效果,c#,.net,logging,log4net,log4net-appender,C#,.net,Logging,Log4net,Log4net Appender,我拥有的一个服务突然喷出大量日志文件,并且没有限制写入的文件数量。这些日志(有点)被命名为MyService.2015-01-08.1、MyService.2015-01-08.2、MyService.2015-01-08.3等,一直到目前的218。我想把这个限制在每天10个,而不是像现在这样不受限制。以下是以前的日志配置: <appender name="RollingFileAppender" type="Ourlib.Logging.CustomRollingFileAppender

我拥有的一个服务突然喷出大量日志文件,并且没有限制写入的文件数量。这些日志(有点)被命名为MyService.2015-01-08.1、MyService.2015-01-08.2、MyService.2015-01-08.3等,一直到目前的218。我想把这个限制在每天10个,而不是像现在这样不受限制。以下是以前的日志配置:

<appender name="RollingFileAppender" type="Ourlib.Logging.CustomRollingFileAppender">
  <file value="c:\logs\myservice" />
  <appendToFile value="true" />
  <rollingStyle value="Composite" />
  <staticLogFileName value="false" />
  <maxSizeRollBackups value="-1" />
  <countDirection value="1" />
  <maximumFileSize value="5000KB" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%utcdate [%thread] %-5level %property{CorrelationId} %property{CallPath} %logger{2} - %message%newline" />
  </layout>
</appender>
更改已经部署,但仍在创建新的日志文件,远远超过新设置的10

假设我的部署是正确的,那么会出现什么问题?我是否误解了我更改的配置属性,或者这里是否发生了其他事情

谢谢大家

试试这个:

<appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
  <file value=".\App.log" />
  <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
  <appendToFile value="true" />
  <maximumFileSize value="10MB" />
  <maxSizeRollBackups value="5" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date [%thread] %level %logger - %message%newline" />
  </layout>
</appender>

另一个例子:

<appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
  <file value=".\Logs\" />
  <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
  <staticLogFileName value="false" />
  <rollingStyle value="Date" />
  <datePattern value="'On_'yyyy-MM-dd'.log'" />
  <appendToFile value="true" />
  <maximumFileSize value="10MB" />
  <maxSizeRollBackups value="10" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date [%thread] %level %logger - %message%newline" />
  </layout>
</appender>

如果您必须使用自定义的,那么我想缺少的是:

  • 文件值属性末尾的重击(
  • 复合文件定义,除非您的自定义附加器已经这样做了
  • 如果前面没有BufferedAppender,请使用lockingModel

  • 尝试添加DatePattern,并将MaxSizeRollBackup值的更改保持为10,如下所示

    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
         <file value="c:\logs\myservice" />
         <appendToFile value="true" />
         <rollingStyle value="Composite" />
         <datePattern value=".yyyy-MM-dd" />
         <maxSizeRollBackups value="10" />
         <maximumFileSize value="5000KB" />
         <countDirection value="1"/>
         <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
         </layout>
    </appender>
    
    
    

    这是一个复合RollingFileAppender,它每天最多保存10个5000KB的日志备份

    您是否打算删除
    ?是的,我也应该提到这一点。您使用的是rollingStyle.Composite,因此文件将根据大小和日期滚动,但您没有指定日期模式-至少没有在配置中,是在自定义appender中设置的吗?此按日期滚动是备份文件数超过MaxSizerollBackup设置sa的原因,该设置仅适用于按大小而不是按日期滚动的文件,如“不支持按日期/时间边界滚动时的最大备份文件数”中所述
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
         <file value="c:\logs\myservice" />
         <appendToFile value="true" />
         <rollingStyle value="Composite" />
         <datePattern value=".yyyy-MM-dd" />
         <maxSizeRollBackups value="10" />
         <maximumFileSize value="5000KB" />
         <countDirection value="1"/>
         <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
         </layout>
    </appender>