log4net - 仅创建一个日志文件

发布于 2024-12-03 06:12:48 字数 1179 浏览 3 评论 0原文

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

谢谢

I am using log4net and when I'm running my application, several logfiles are created.
It appears the log4net is creating a new logfile whenever the time-format changes, meaning I end up with a new logfile whenever a minute has passed.

I have probably missunderstod the xml syntax used, but I'm not sure where its wrong (maybe RollingFileAppender?).

Here's the xml file:

<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>

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

流云如水 2024-12-10 06:12:48

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

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>

If you really want just one file then you should use the normal file appender:

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

Based on your comments I assume your application runs for a "short" time and therefore you want to have some date / time information in your log file name. This you can do like this:

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

Update:

Configuration Sample (that works for me):

<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>
初见终念 2024-12-10 06:12:48

您需要将日期模式更改为类似的内容,

<datePattern value="yyyyMMdd" />

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


示例:
通过此配置,

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

您可以告诉文件附加程序每分钟创建一个新的日志文件(如果您每分钟至少向日志写入一次内容)。

假设您于 2011 年 9 月 21 日 17:00:00 开始申请。您每秒输出日志信息。
这意味着前 60 秒(直到 17:00:59)所有输出都将保存到名为 Foo20110921_1700 的文件中。
17:01:00 发生下一个输出,文件将“翻转”,这意味着创建了一个新文件 Foo20110921_1701
在接下来的 60 秒内,所有输出都将保存到这个新文件中。同样的情况还会在 17:02:0017:03:00 等时间再次发生。


有关详细信息,请参阅 RollingFileAppender 文档

You need to change your date pattern to something like

<datePattern value="yyyyMMdd" />

This will roll your logfile once a day.


Example:
With this configuration

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

you are telling the file appender to create a new logfile every minute (if you are writing something to the logs at least once a minute).

Say you started your application at 17:00:00 on 09/21/2011. You output logging information every second.
This means that for the first 60 seconds (until 17:00:59) all output will be into a file named Foo20110921_1700.
At 17:01:00 the next output occurs and the file will be 'rolled over', meaning a new file Foo20110921_1701 is created.
For the next 60 seconds all output will be into this new file. The same will happen again at 17:02:00, 17:03:00 and so forth.


See RollingFileAppender documentation for more information

梦旅人picnic 2024-12-10 06:12:48

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

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

这样您将每 10MB 滚动一次文件。

Alternatively, if you don't want to roll by date, use the Size value

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

So you will roll your files every 10MB.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文