我现在控制是20M大小后就在创建建一个日志,但是随着文件越来越多,占用了大量资源,
我想知道怎样配置只保留5天内的数据呢?

解决方案 »

  1.   

    谢谢回复,不过系统日志需求里是不允许的,还有其他方法吗,最好针对LOG4NET配置
      

  2.   

    rollingStyle  取Date,即按日期来
    maxSizeRollBackups 取5,即5个文件
    datePattern _yyyy-MM-dd.LOG 即日期格式是日期,也就是说每日备份一个所以总体的说法是,每日生成一个日志文件,且只保留5个,也就能实现你的目的了。希望可以帮到你。
    <?xml version="1.0" encoding="utf-8"?>
    <!-- 
        注意: 除了手动编辑此文件以外,您还可以使用 
        Web 管理工具来配置应用程序的设置。可以使用 Visual Studio 中的
         “网站”->“Asp.Net 配置”选项。
        设置和注释的完整列表在 
        machine.config.comments 中,该文件通常位于 
        \Windows\Microsoft.Net\Framework\v2.x\Config 中
    -->
    <configuration>
      <log4net>
        <configSections>
          <section name="log4net" 
          type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
        </configSections>
        <logger name="MyLogger">
          <!--control log level: ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF-->
          <!--如果没有定义LEVEL的值,则缺省为DEBUG-->
          <level value="ALL" />      
          <appender-ref ref="FileAppender"></appender-ref>
        </logger>
        <appender name="FileAppender" type="log4net.Appender.RollingFileAppender">
          <!--绝对路径-->
          <file value="C:\\LHNP.LOG"></file>
          <!--相对路径,在项目的根目录下-->
          <!--以最后一个路径为准,所以上面的绝对路径下不会写日志-->
          <file value="./Log/LHNP.LOG"></file>
          <!--防止多线程时不能写Log,官方说线程非安全-->
          <!--实际使用时,本地测试正常,部署后有不能写日志的情况-->
          <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
          <appendToFile value="true" />
          <!--可以为:Once|Size|Date|Composite-->
          <!--Composite为Size和Date的组合-->
          <rollingStyle value="Date" />
          <!--日志最大个数,都是最新的-->
          <!--rollingStyle节点为Date时,该节点不起作用-->
          <!--rollingStyle节点为Size时,只能有value个日志-->
          <!--rollingStyle节点为Composite时,每天有value个日志-->
          <maxSizeRollBackups value="5" />
          <!--当备份文件时,为文件名加的后缀-->
          <!--后缀为*.txt时,例:AX.txt_2008-07-24.PxP  应该是程序上的一个bug-->
          <!--后缀为*.TXT时,例:AX.txt_2008-07-25.TXT yyyy-MM-dd -->
          <datePattern value="_yyyy-MM-dd.LOG" />
          <!--可用的单位:KB|MB|GB-->
          <!--不要使用小数,否则会一直写入当前日志-->
          <maximumFileSize value="5000KB" />
          <!--置为true,当前最新日志文件名永远为file节中的名字-->
          <staticLogFileName value="true" />
          <!--输出级别在INFO和ERROR之间的日志-->
          <filter type="log4net.Filter.LevelRangeFilter">
            <param name="LevelMin" value="DEBUG" />
            <param name="LevelMax" value="ERROR" />
          </filter>
          <!--必须结合起来用,第一个只过滤出WARN,第二个拒绝其它其它日志输出-->
          <filter type="log4net.Filter.LevelMatchFilter">
            <param name="LevelToMatch" value="WARN" />
          </filter>
          <filter type="log4net.Filter.DenyAllFilter" />      <layout type="log4net.Layout.PatternLayout">
            <!--<conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" />-->
            <conversionPattern value="%date %-5level - %message%newline" />
          </layout>
        </appender>
      </log4net>
      <!--==================================layout节点的配置说明==================================-->
      <!--                                                                        Made By AX      -->
      <!--        %m(message):输出的日志消息,如ILog.Debug(…)输出的一条消息                          -->
      <!--        %n(new line):换行                                                                   -->
      <!--        %d(datetime):输出当前语句运行的时刻                                                 -->
      <!--        %r(run time):输出程序从运行到执行到当前语句时消耗的毫秒数                           -->
      <!--        %t(thread id):当前语句所在的线程ID                                                  -->
      <!--        %p(priority): 日志的当前优先级别,即DEBUG、INFO、WARN…等                           -->
      <!--        %c(class):当前日志对象的名称,例如:                                                -->
      <!--               模式字符串为:%-10c -%m%n                                                    -->
      <!--               代码为:                                                                     -->
      <!--        ILog log=LogManager.GetLogger(“Exam.Log”);                                        -->
      <!--        log.Debug(“Hello”);                                                               -->
      <!--            则输出为下面的形式:                                                            -->
      <!--        Exam.Log       - Hello                                                              -->
      <!--        %L:输出语句所在的行号                                                              -->
      <!--        %F:输出语句所在的文件名                                                            -->
      <!--        %-数字:表示该项的最小长度,如果不够,则用空格填充                                  -->
      <!--        例如,转换模式为%r [%t]%-5p %c - %m%n 的 PatternLayout 将生成类似于以下内容的输出: -->
      <!--        176 [main] INFO  org.foo.Bar - Located nearest gas station.                         -->
      <!--                                                                                        -->
      <!--========================================================================================--></configuration>
      

  3.   

    RollingLogFileAppender描述记录日志的方式,这代表日志将被写在一个文件,该文件当满的话会自动增加. 
    添加时删除以前记录