log4net - 只创建一个日志文件

时间:2011-09-05 11:14:53

标签: c# xml logging log4net

我正在使用log4net,当我运行我的应用程序时,会创建几个日志文件。 每当时间格式发生变化时,log4net似乎都在创建一个新的日志文件,这意味着只要一分钟过去,我就会得到一个新的日志文件。

我可能会错误地使用xml语法,但我不确定它的错误(也许是RollingFileAppender?)。

这是xml文件:

<log4net>

  <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date %-5level [%thread] %logger:%line - %message%newline"/>
    </layout>
  </appender>

  <appender name="FileAppender" type="log4net.Appender.RollingFileAppender">
    <appendToFile value="true"/>
    <rollingStyle value="Date"/>
    <staticLogFileName value="false" />
    <datePattern value="yyyyMMdd_hhmm'.log'"/>
    <file value="Boghe"/>
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date %-5level [%thread] %logger:%line - %message%newline"/>
    </layout>
  </appender>

  <root>
    <level value="ALL"/>
    <appender-ref ref="ConsoleAppender"/>
    <appender-ref ref="FileAppender"/>
  </root>

</log4net>

由于

3 个答案:

答案 0 :(得分:2)

您需要将日期模式更改为

<datePattern value="yyyyMMdd" />

这将每天滚动一次日志文件。


示例: 使用此配置

<file value="Foo" />
<StaticLogFileName value="false">
<datePattern value="yyyyMMdd_hhmm"/>

你告诉文件appender每分钟创建一个新的日志文件(如果你每分钟至少写一次日志文件)。

假设您在17:00:00 on 09/21/2011开始申请。您每秒输出一次记录信息 这意味着在前60秒(直到17:00:59),所有输出都将进入名为Foo20110921_1700的文件中。 在17:01:00,下一个输出发生,文件将被“翻转”,这意味着创建了一个新文件Foo20110921_1701。 在接下来的60秒内,所有输出都将进入此新文件。同样会在17:02:0017:03:00等处再次发生。


有关详细信息,请参阅RollingFileAppender documentation

答案 1 :(得分:2)

如果你真的只想要一个文件,那么你应该使用普通文件appender:

http://logging.apache.org/log4net/release/config-examples.html#FileAppender

根据您的评论,我假设您的应用程序运行“短”时间,因此您希望在日志文件名中包含一些日期/时间信息。你可以这样做:

<file type="log4net.Util.PatternString" value="Boghe%date{yyyyMMdd_hhmm}.log" />

<强>更新

配置示例(适用于我):

<appender name="FileAppender" type="log4net.Appender.FileAppender">
   <file type="log4net.Util.PatternString"
         value="c:\temp\Boghe%date{yyyyMMdd_hhmm}.log" />

   <appendToFile value="true" />
   <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date - %message%newline" />
   </layout>
</appender>

答案 2 :(得分:0)

或者,如果您不想按日期滚动,请使用“大小”值

    <rollingStyle value="Size"/>
    <maximumFileSize value="10MB"/>

因此,您将每10MB滚动一次文件。