log4net每次运行一个文件

时间:2010-06-15 20:39:49

标签: log4net

我需要我的应用程序在每次运行时创建一个日志文件。

我首选的格式是 App.log.yyyy-MM-dd_HH-mm-ss 。如果那是不可能的,我会选择 App.log.yyyy-MM-dd.counter

这是我目前的appender配置:

<appender name="File" type="log4net.Appender.RollingFileAppender">
  <file value="App.log"/>
  <rollingStyle value="Date"/>
  <datePattern value=".yyyy-MM-dd_HH-mm-ss"/>
  <staticLogFileName value="false"/>
  <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
</appender>

但它会根据日期和时间创建一个随机数量的文件。

3 个答案:

答案 0 :(得分:57)

我假设应用程序每次运行时应该只创建一个日志文件,因此您不需要滚动文件追加器(尽管我的解决方案也适用于滚动文件追加器):

<appender name="FileAppender" type="log4net.Appender.FileAppender">
    <file type="log4net.Util.PatternString" value="c:\temp\App-%date{yyyy-MM-dd_HH-mm-ss}.log" />
    <appendToFile value="true" />
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%2thread] %-5level - %message%newline" />
    </layout>
</appender>

(显然,您可以使用其他自己的布局和文件追加器的其他设置。)

答案 1 :(得分:33)

另请注意,您可以将滚动样式设置为

rollingstyle="Once"

每次运行时都会创建一个新文件。如果staticLogFileName设置为true(例如logname.log),则之前的日志将设置为logname.log.1logname.log.2等。

可以通过设置

来控制覆盖最早(例如10)之前保留的文件数

maxSizeRollBackups="10"

修改 我的配置,每次执行创建一个带日期戳的日志(除非存在一个,在这种情况下它遵循.1规则,如下所示:

<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
    <file type="log4net.Util.PatternString" value="Logs\MyLog-%date{dd-MM-yyyy}.log" />
    <appendToFile value="false" />    
    <maxSizeRollBackups value="-1" /> <!--infinite-->
    <staticLogFileName value="true" />
    <rollingStyle value="Once" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%-5level %date [%thread] %c{1} - %m%n" />
    </layout>
</appender>

我不能100%确定appendToFile="false"是否the docs表示在您使用rollingStyle="Once"时会自动完成,但这在任何情况下都会更清晰。

答案 2 :(得分:0)

它来自log4net文档中的apache:

https://logging.apache.org/log4net/release/config-examples.html

ctrl + f for&#34;每个程序执行&#34;

<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
    <file value="logfile.txt" />
    <appendToFile value="false" />
    <rollingStyle value="Size" />
    <maxSizeRollBackups value="-1" />
    <maximumFileSize value="50GB" />
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
    </layout>
</appender>