Log4net -只创建一个日志文件

本文关键字:一个 日志 文件 -只 创建 Log4net | 更新日期: 2023-09-27 18:07:28

我使用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>

谢谢

Log4net -只创建一个日志文件

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

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>

您需要将日期模式更改为

<datePattern value="yyyyMMdd" />

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


例子:使用这个配置

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

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

假设您在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文档获取更多信息

或者,如果您不想按日期滚动,则使用Size值

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

你将每10MB滚动一次文件