怎样控制log4net关闭文件然后在重新写入文件?

时间:2021-09-03 05:40:12
最近想用log4net加入生成的日志文件。
因为是一个用于生产测试的软件,所以每次测试都是重复的一些步骤。
于是打算就把每一轮的日志放到一个单独文件里面。
不知怎样控制log4net实现以上功能?
谢谢。

5 个解决方案

#1


每轮?那你每次测试时修改下配置文件呗,在配置中将文件名修改

#2


每次测试后改变日志配置文件的内容,或者新建一个配置文件,在里面改变你要的日志文件名
然后XmlConfigurator.Configure(配置文件)
这样就写到不同的文件里去了吧

如果你是Watch模式的话,那么直接改变配置文件,log4net会自动载入新的配置

#3


每一轮是按什么逻辑的?日期?
  <log4net>  
    <root>  
      <appender-ref ref="WebLog" />  
      <appender-ref ref="APILog" />  
    </root>  
    <appender name="WebLog" type="log4net.Appender.RollingFileAppender,log4net">  
      <file value="Log/web/" />  
      <appendToFile value="true" />  
      <rollingStyle value="Date" />  
<!--按照日期生成日志名-->  
      <datePattern value="yyyy-MM-dd&quot;.log&quot;" />  
      <maxSizeToRollBackups value="10" />  
      <maximumFileSize value="5MB" />  
      <staticLogFileName value="false" />  
      <layout type="log4net.Layout.PatternLayout,log4net">  
        <conversionPattern value="%d - %-5level - %c - %m%n" />  
      </layout>  
<!--防止日志被占用-->  
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />  
    </appender>  

  </log4net>  

#4


引用 2楼stherix 的回复:
每次测试后改变日志配置文件的内容,或者新建一个配置文件,在里面改变你要的日志文件名
然后XmlConfigurator.Configure(配置文件)
这样就写到不同的文件里去了吧

如果你是Watch模式的话,那么直接改变配置文件,log4net会自动载入新的配置
谢谢回复。当一轮测试完后,我想通过代码把当前log4net当前的资源全部释放,然后把写入的日志存到数据库后并删除日志文件。等下一轮测试的时候让log4net再次写入同样的日志文件。
这样每一轮测试,都对应一个单独等的日志文件!

#5


引用 3楼正怒月神 的回复:
每一轮是按什么逻辑的?日期?
  <log4net>  
    <root>  
      <appender-ref ref="WebLog" />  
      <appender-ref ref="APILog" />  
    </root>  
    <appender name="WebLog" type="log4net.Appender.RollingFileAppender,log4net">  
      <file value="Log/web/" />  
      <appendToFile value="true" />  
      <rollingStyle value="Date" />  
<!--按照日期生成日志名-->  
      <datePattern value="yyyy-MM-dd&quot;.log&quot;" />  
      <maxSizeToRollBackups value="10" />  
      <maximumFileSize value="5MB" />  
      <staticLogFileName value="false" />  
      <layout type="log4net.Layout.PatternLayout,log4net">  
        <conversionPattern value="%d - %-5level - %c - %m%n" />  
      </layout>  
<!--防止日志被占用-->  
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />  
    </appender>  

  </log4net>  
谢谢回复。当一轮测试完后,我想通过代码把当前log4net当前的资源全部释放,然后把写入的日志存到数据库后并删除日志文件。等下一轮测试的时候让log4net再次写入同样的日志文件。
这样每一轮测试,都对应一个单独等的日志文件!

#1


每轮?那你每次测试时修改下配置文件呗,在配置中将文件名修改

#2


每次测试后改变日志配置文件的内容,或者新建一个配置文件,在里面改变你要的日志文件名
然后XmlConfigurator.Configure(配置文件)
这样就写到不同的文件里去了吧

如果你是Watch模式的话,那么直接改变配置文件,log4net会自动载入新的配置

#3


每一轮是按什么逻辑的?日期?
  <log4net>  
    <root>  
      <appender-ref ref="WebLog" />  
      <appender-ref ref="APILog" />  
    </root>  
    <appender name="WebLog" type="log4net.Appender.RollingFileAppender,log4net">  
      <file value="Log/web/" />  
      <appendToFile value="true" />  
      <rollingStyle value="Date" />  
<!--按照日期生成日志名-->  
      <datePattern value="yyyy-MM-dd&quot;.log&quot;" />  
      <maxSizeToRollBackups value="10" />  
      <maximumFileSize value="5MB" />  
      <staticLogFileName value="false" />  
      <layout type="log4net.Layout.PatternLayout,log4net">  
        <conversionPattern value="%d - %-5level - %c - %m%n" />  
      </layout>  
<!--防止日志被占用-->  
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />  
    </appender>  

  </log4net>  

#4


引用 2楼stherix 的回复:
每次测试后改变日志配置文件的内容,或者新建一个配置文件,在里面改变你要的日志文件名
然后XmlConfigurator.Configure(配置文件)
这样就写到不同的文件里去了吧

如果你是Watch模式的话,那么直接改变配置文件,log4net会自动载入新的配置
谢谢回复。当一轮测试完后,我想通过代码把当前log4net当前的资源全部释放,然后把写入的日志存到数据库后并删除日志文件。等下一轮测试的时候让log4net再次写入同样的日志文件。
这样每一轮测试,都对应一个单独等的日志文件!

#5


引用 3楼正怒月神 的回复:
每一轮是按什么逻辑的?日期?
  <log4net>  
    <root>  
      <appender-ref ref="WebLog" />  
      <appender-ref ref="APILog" />  
    </root>  
    <appender name="WebLog" type="log4net.Appender.RollingFileAppender,log4net">  
      <file value="Log/web/" />  
      <appendToFile value="true" />  
      <rollingStyle value="Date" />  
<!--按照日期生成日志名-->  
      <datePattern value="yyyy-MM-dd&quot;.log&quot;" />  
      <maxSizeToRollBackups value="10" />  
      <maximumFileSize value="5MB" />  
      <staticLogFileName value="false" />  
      <layout type="log4net.Layout.PatternLayout,log4net">  
        <conversionPattern value="%d - %-5level - %c - %m%n" />  
      </layout>  
<!--防止日志被占用-->  
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />  
    </appender>  

  </log4net>  
谢谢回复。当一轮测试完后,我想通过代码把当前log4net当前的资源全部释放,然后把写入的日志存到数据库后并删除日志文件。等下一轮测试的时候让log4net再次写入同样的日志文件。
这样每一轮测试,都对应一个单独等的日志文件!